如何解决'.MainActivity。 (MainActivity.java:16)'错误?

问题描述 投票:0回答:2

EditText对象没有创建,为什么?

EditText editText=(EditText)findViewById(R.id.edittext); 

这是一个扩展AsyncTask类的应用程序。 fetchingData是一个扩展AsyncTask类的类。但它在创建EditText对象时出错。

package com.example.zafar.omdb_7;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    String string;
    Button button;
    public static TextView data;
//
    private EditText editText = findViewById ( R.id.edittext );
//
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        data=findViewById(R.id.fetched_data);
        button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
//
            @Override
            public void onClick(View v) {
                //              string = editText.getText ().toString ();

                fetchingData process= new fetchingData();
                process.execute();
            }
        });
    }
} 
java android android-edittext
2个回答
0
投票

您不能使用以下内容:

public class MainActivity extends AppCompatActivity {

    // This won't work!
    private EditText editText = findViewById ( R.id.edittext );

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      ...
    }
 }

因为在使用findViewById设置Activity布局之前无法调用setContentView()。这意味着如果您还没有布局,则无法找到视图。

因此,将代码编辑为以下内容:

public class MainActivity extends AppCompatActivity {
    ...
    private EditText mEdtText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Now you have the layout, you can find the view
        mEdtText = findViewById(R.id.edittext);

        ...
    }
}

2
投票

你的代码应该是这样的:

package com.example.zafar.omdb_7;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    String string;
    Button button;
    public static TextView data;
//
    private EditText editText;
//
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        data=findViewById(R.id.fetched_data);
        editText = findViewById ( R.id.edittext );
        button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
//
            @Override
            public void onClick(View v) {
                //              string = editText.getText ().toString ();

                fetchingData process= new fetchingData();
                process.execute();
            }
        });
    }
} 

在将活动设置为活动之前,您将找不到该视图。我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.