2013-04-22 54 views
0

我是一個初學者的android開發人員。 我有一個數據庫表,計數以下列:_id,fistName,lastName和用戶名設置爲唯一。顯示錯誤創建alertDialog()

當我在我的表中添加另一個人並且用戶名已存在時,我創建了一個AlertDialog,但是此AlertDialog未出現。

這是我的源代碼:

try { 
     personRepository.AddPerson(persons); 
    } catch (SQLiteConstraintException ex) { 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
       context); 
     alertDialogBuilder.setTitle("User already exist!"); 
     alertDialogBuilder.setMessage("Choose another username!") 
       .setPositiveButton("Yes", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
            int id) { 
           dialog.cancel(); 
          } 
         }); 
     AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 
    } 

有人能幫助我嗎?

+0

發表您的addPerson的代碼。 – 2013-04-22 16:30:08

回答

2

試試這個

AlertDialog alert; 
alert=new AlertDialog.Builder(YourActivity.this) 
       .setCancelable(false) 
       .setMessage("Message") 
       .setPositiveButton("Okay", new DialogInterface.OnClickListener() 
       { 

        @Override 
        public void onClick(DialogInterface dialog, int which) 
        { 
         // TODO Auto-generated method stub 
         dialog.dismiss(); 
        } 
       }).show(); 
+0

你在OP中發現的問題是什麼,並提出這個代碼?你能解釋一下你的答案嗎? – 2013-04-22 13:44:29

+0

有時Context,getContext()甚至getApplicationContext()都會導致此異常。嘗試通過 'this' 或 'YourActivity.this' 活動從上下文繼承所以它的工作原理,但我真的不知道爲什麼得到上下文它應該做它不會工作,給予該怪異例外。 – user1621629 2013-04-22 14:16:14

+0

'getApplicationContext()'傳遞整個應用程序上下文,'YourActivity.this'傳遞動作上下文。我認爲,這是兩者之間的主要區別。 – 2013-04-22 14:44:28

0

如果您AddPerson方法調用insertOrThrow然後更改

catch (SQLiteConstraintException ex) 

catch (SQLException ex)