#android #button #runtime-error
#Android #кнопка #время выполнения-ошибка
Вопрос:
Я новичок в написании приложений для Android. Не могли бы вы, пожалуйста, помочь мне, как справиться с этой проблемой. я включил запись logcat и класс activity.
журнал:
11-07 12:46:28.245: D/AndroidRuntime(579): Shutting down VM
11-07 12:46:28.245: W/dalvikvm(579): threadid=1: thread exiting with uncaught exception (group=0x40015560)
11-07 12:46:28.285: E/AndroidRuntime(579): FATAL EXCEPTION: main
11-07 12:46:28.285: E/AndroidRuntime(579): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.trial.login/com.trial.login.Login1Activity}: java.lang.NullPointerException
11-07 12:46:28.285: E/AndroidRuntime(579): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
11-07 12:46:28.285: E/AndroidRuntime(579): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
11-07 12:46:28.285: E/AndroidRuntime(579): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-07 12:46:28.285: E/AndroidRuntime(579): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
11-07 12:46:28.285: E/AndroidRuntime(579): at android.os.Handler.dispatchMessage(Handler.java:99)
11-07 12:46:28.285: E/AndroidRuntime(579): at android.os.Looper.loop(Looper.java:123)
11-07 12:46:28.285: E/AndroidRuntime(579): at android.app.ActivityThread.main(ActivityThread.java:3683)
11-07 12:46:28.285: E/AndroidRuntime(579): at java.lang.reflect.Method.invokeNative(Native Method)
11-07 12:46:28.285: E/AndroidRuntime(579): at java.lang.reflect.Method.invoke(Method.java:507)
11-07 12:46:28.285: E/AndroidRuntime(579): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-07 12:46:28.285: E/AndroidRuntime(579): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-07 12:46:28.285: E/AndroidRuntime(579): at dalvik.system.NativeStart.main(Native Method)
11-07 12:46:28.285: E/AndroidRuntime(579): Caused by: java.lang.NullPointerException
11-07 12:46:28.285: E/AndroidRuntime(579): at com.trial.login.Login1Activity.onCreate(Login1Activity.java:28)
11-07 12:46:28.285: E/AndroidRuntime(579): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-07 12:46:28.285: E/AndroidRuntime(579): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
11-07 12:46:28.285: E/AndroidRuntime(579): ... 11 more
LoginActivity.class:
package com.trial.login;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Login1Activity extends Activity {
TextView username, password;
EditText user_edit, pwd_edit;
Button login, cancel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
login = (Button) findViewById(R.id.bt1);
cancel = (Button) findViewById(R.id.bt2);
username = (TextView) findViewById(R.id.tv1);
password = (TextView) findViewById(R.id.tv2);
user_edit = (EditText) findViewById(R.id.txtUname);
pwd_edit = (EditText) findViewById(R.id.txtPwd);
login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
display();
}
});
}
cancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
user_edit.clearComposingText();
pwd_edit.clearComposingText();
}
});
public void display(){
String user_temp, pwd_temp;
user_temp = user_edit.getText().toString();
pwd_temp = pwd_edit.getText().toString();
username.setText(user_temp);
password.setText(pwd_temp);
}
}
Комментарии:
1. не могли бы вы опубликовать свой main.xml файл?
Ответ №1:
Я не уверен, решит ли это вашу проблему, но не следует отменять.setOnClickListener находиться в onCreate? Я должен признать, что я не знаком с тем, как Java инициализирует объекты, но может случиться так, что этот блок кода выполняется до того, как отмена укажет на что-либо.
Ответ №2:
Попробуйте это:
package com.trial.login;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Login1Activity extends Activity {
TextView username, password;
EditText user_edit, pwd_edit;
Button login, cancel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
login = (Button) findViewById(R.id.bt1);
cancel = (Button) findViewById(R.id.bt2);
username = (TextView) findViewById(R.id.tv1);
password = (TextView) findViewById(R.id.tv2);
user_edit = (EditText) findViewById(R.id.txtUname);
pwd_edit = (EditText) findViewById(R.id.txtPwd);
login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
display();
}
});
cancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
user_edit.clearComposingText();
pwd_edit.clearComposingText();
}
});
}
public void display(){
String user_temp, pwd_temp;
user_temp = user_edit.getText().toString();
pwd_temp = pwd_edit.getText().toString();
username.setText(user_temp);
password.setText(pwd_temp);
}
}
Ответ №3:
Убедитесь, что все представления, которые вы использовали в своем коде, присутствуют в main.xml . Также проверьте, что все идентификаторы представлений, которые вы написали в коде, совпадают с идентификаторами в main.xml
* Поместите конечную скобку метода onCreate после cancel.setOnClickListener