如果,带对话框的else语句出错(下面是我的Log cat错误)

时间:2014-01-15 11:51:51

标签: android android-intent android-dialog

我创建了这个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

3 个答案:

答案 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)。我认为这是您的代码中的问题。