2011-05-01 64 views
0

我有一些代码使用警报对话框添加东西到数据库。这有效,但只有我第一次使用它。第二次按下按钮打开警报对话框,强制关闭。在android第二次我呼吁警告对话框它强制关闭

final AlertDialog.Builder alert1 = new AlertDialog.Builder(EmergencyDb.this); 
     final AlertDialog.Builder alert2 = new AlertDialog.Builder(EmergencyDb.this); 
     alert1.setTitle("New Contact"); 
     alert1.setMessage("Name: "); 
     alert2.setTitle("New Contact"); 
     alert2.setMessage("Phone Number: "); 

     final EditText input1 = new EditText(EmergencyDb.this); 
     final EditText input2 = new EditText(EmergencyDb.this); 
     final int PHONE_TYPE = 3; 
     input2.setInputType(PHONE_TYPE); 
     alert1.setView(input1); 
     alert2.setView(input2); 
     alert1.setPositiveButton("Next", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       name = input1.getText().toString(); 
       alert2.show(); 

        } 
       }); 

     alert2.setPositiveButton("Add", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       phoneNum = input2.getText().toString(); 
       SQLiteDatabase db = openHelper.getReadableDatabase(); 
       openHelper.addContact(name, phoneNum, db); 
       Cursor cursor = null; 
       try { 
        cursor = getContactCursor(); 
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(EmergencyDb.this, 
          R.layout.row, cursor, COLUMNS, VIEWS); 
        setListAdapter(adapter); 
       } 
       catch (Exception ex){ 
        //... error handling 
       } 

        } 
       }); 

     alert1.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int whichButton) { 
       // Canceled. 
       } 
      }); 

     alert2.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int whichButton) { 
       // Canceled. 
       } 
      }); 
     final Button addButton = (Button) findViewById(R.id.addButton); 

     addButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       alert1.show(); 

      } 
     }); 
+5

在Eclipse中使用'adb logcat',DDMS或DDMS透视图来检查LogCat并查看与“强制关闭”相关的堆栈跟踪。 – CommonsWare 2011-05-01 17:22:38

回答

0

也许问题出在最终访问修饰符?但是,请检查您的logcat以找到答案。祝你好运!

0

您可能不得不dismiss()cancel()警告之前,您显示另一个或事情可能会感到困惑。在onClick方法中添加dialog.cancel()

alert1.setPositiveButton("Next", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       name = input1.getText().toString(); 
       dialog.cancel(); alert2.show(); 

        } 
       }); 

让我知道这是否有效。