#android #performance #android-studio
#Android #Производительность #android-studio
Вопрос:
Я использую Android studio для создания нового приложения.Я создал действие кнопки. Ниже приведен фрагмент кода.
final EditText text = (EditText) findViewById(R.id.editText);
Button button = (Button) findViewById(R.id.addButton);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button.setOnClickListener(
new View.OnClickListener(){
@Override
public void onClick(View v) {
try {
int myNum = Integer.parseInt(text.getText().toString());
} catch(NumberFormatException nfe) {
}
}
}
);
Когда я пытаюсь запустить модуль, он выдает это сообщение об ошибке.
Комментарии:
1. Сообщение об ошибке сообщает вам, что приложение разбилось. Вероятно, потому, что вы вызываете findViewById до того, как ваш макет будет увеличен, поэтому объект недействителен
2. Вы проверили ошибку stackstrace? Проверьте свой журнал и вставьте ошибку здесь.
Ответ №1:
final EditText text = (EditText) findViewById(R.id.editText);
Button button = (Button) findViewById(R.id.addButton);
поместите вышеуказанные строки сразу после этих строк
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
то есть,
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText text = (EditText) findViewById(R.id.editText);
Button button = (Button) findViewById(R.id.addButton);
В противном случае ваша активность не сможет найти представление с идентификаторами «EditText» и «addButton».
Вызывая setContentView(R.layout.activity_main), вы говорите, что ваша активность, activity_main — это макет для вашей активности, и все виды, на которые вы ссылаетесь, взяты из этого макета.