2013-04-22 55 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)