簡體   English   中英

如何解決&#39;.MainActivity。 <init> (MainActivity.java:16)&#39;錯誤?

[英]How to solve the '.MainActivity.<init>(MainActivity.java:16)' error?

未創建EditText對象,為什么?

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

這是用於擴展AsyncTask類的App。 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();
            }
        });
    }
} 

您的代碼應如下所示:

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();
            }
        });
    }
} 

在活動上設置視圖之前,您將找不到它。 我希望這有幫助。

您不能使用以下內容:

public class MainActivity extends AppCompatActivity {

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

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

因為在使用setContentView()設置Activity布局之前無法調用findViewById 這意味着如果您還沒有布局,則無法找到視圖。

因此,將您的代碼編輯為如下所示:

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);

        ...
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM