簡體   English   中英

如何獲得實例化錯誤以及如何解決它? [Android]

[英]How is it getting an instantiation error and how to fix it? [Android]

我一直在編寫一個簡單的android Java程序,到目前為止,我在activity_main.xml包括了一個ImageView ,一個按鈕和一個EditText 但是,當我運行它時,使用此MainActivity java類:

public class MainActivity extends Activity {

private Button start = (Button) findViewById(R.id.start);
private EditText nameField = (EditText) findViewById(R.id.nameField);

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

    start.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            String name = nameField.getText().toString();

        }
    });

}

無法正常工作,它返回了我無法解決的致命錯誤。 它說:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo, java.lang.NullPointerException

我該如何解決? 非常感謝!

您應該將這些初始化移動到onCreate

private Button start = (Button) findViewById(R.id.start);
private EditText nameField = (EditText) findViewById(R.id.nameField);

即:

private Button start;
private EditText nameField;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    start = (Button) findViewById(R.id.start);
    nameField = (EditText) findViewById(R.id.nameField);

    start.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            String name = nameField.getText().toString();

        }
    });
}

當您在成員初始化表達式中調用findViewById(R.id.start)時,尚未初始化Activity實例,這會導致NullPointerException

暫無
暫無

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

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