我创建了这个if,else语句,如果Name不是null,它将插入,但如果它不是它将显示对话框。这是我的代码。我在if else语句中输入,所以如果name不为null,它可以存储它所做的东西,但是当名称为null时,对话框不会弹出。我不知道为什么。我的代码有问题吗?当Name为NULL时,我按btn添加应用程序直接停止工作。没有出现对话框。
Button btnAdd = (Button) findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
EditText etDesc = (EditText) findViewById(R.id.etDesc);
EditText etStart = (EditText) findViewById(R.id.etStart);
EditText etEnd = (EditText) findViewById(R.id.etEnd);
EditText etPhone = (EditText) findViewById(R.id.etPhone);
//from passing class
Intent intent = getIntent();
String Name = intent.getExtras().getString("Name");
if (Name != null){
TripDetails details = new TripDetails(etDesc.getText().toString(),
etStart.getText().toString(), etEnd.getText()
.toString(),etPhone.getText().toString(),Name);
Trip.add(details);
aa.notifyDataSetChanged();
etDesc.setText("");
etStart.setText("");
etEnd.setText("");
etPhone.setText("");
getIntent().removeExtra("Name");
}
else {
//incase they never key in the "Name"
//put dialo
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(MainPage.this);
dlgAlert.setMessage("wrong password or username");
dlgAlert.setTitle("Error Message...");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create().show();
dlgAlert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
}
}
});
01-15 20:45:26.104: W/dalvikvm(6394): threadid=1: thread exiting with uncaught exception (group=0x416162a0)
01-15 20:45:26.114:E / AndroidRuntime(6394):致命异乎寻常:主要 01-15 20:45:26.114:E / AndroidRuntime(6394):java.lang.NullPointerException 01-15 20:45:26.114:E / AndroidRuntime(6394):at com.example.nextbusstopv1.MainPage $ 1.onClick(MainPage.java:95) 01-15 20:45:26.114:E / AndroidRuntime(6394):在android.view.View.performClick(View.java:4211) 01-15 20:45:26.114:E / AndroidRuntime(6394):在android.view.View $ PerformClick.run(View.java:17267) 01-15 20:45:26.114:E / AndroidRuntime(6394):在android.os.Handler.handleCallback(Handler.java:615) 01-15 20:45:26.114:E / AndroidRuntime(6394):在android.os.Handler.dispatchMessage(Handler.java:92) 01-15 20:45:26.114:E / AndroidRuntime(6394):在android.os.Looper.loop(Looper.java:137) 01-15 20:45:26.114:E / AndroidRuntime(6394):在android.app.ActivityThread.main(ActivityThread.java:4898) 01-15 20:45:26.114:E / AndroidRuntime(6394):at java.lang.reflect.Method.invokeNative(Native Method) 01-15 20:45:26.114:E / AndroidRuntime(6394):at java.lang.reflect.Method.invoke(Method.java:511) 01-15 20:45:26.114:E / AndroidRuntime(6394):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1006) 01-15 20:45:26.114:E / AndroidRuntime(6394):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 01-15 20:45:26.114:E / AndroidRuntime(6394):at dalvik.system.NativeStart.main(Native Method) 01-15 20:45:26.144:E / android.os.Debug(2273):! @ Rollstate> dumpstate -k -t -z -d -o / data / log / dumpstate_app_error
答案 0 :(得分:1)
尽量避免传递setPositiveButton选项的2倍。并且在创建和显示对话框后也避免传递它。
答案 1 :(得分:1)
尝试喜欢
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(MainPage.this);
dlgAlert.setMessage("wrong password or username");
dlgAlert.setTitle("Error Message...");
dlgAlert.setCancelable(true);
dlgAlert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
// create alert dialog
AlertDialog alertDialog = dlgAlert.create();
// show it
alertDialog.show();
});
答案 2 :(得分:0)
有时Java不识别等于(“==”)或不等于(!=)条件。当我使用这种类型的条件(Str == strname)时,我在职业生涯中遇到了几个问题,所以如果str等于strname则条件不正确,那么我回顾一些帖子,所以在我使用之后(str.equals(strname) ))这样就满足了我的条件。尝试使用(!Name.equals(null))而不是(Name!= null)。我认为这是您的代码中的问题。