[英]How to fix an android 'IllegalStateException' error?
[英]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.