Android输入对话框

时间:2010-10-07 18:58:19

标签: android sqlite input dialog

我有用于显示自定义对话框的课程

public class Add_Category_Dialog {
public  String inputed_value;
private Context context;
public Add_Category_Dialog(Context context){
    this.context=context;
}
public void showDialog(){

       AlertDialog.Builder alert = new AlertDialog.Builder(context);  

       alert.setTitle("Title");  
       alert.setMessage("Message");  


       final EditText input = new EditText(context);  
       alert.setView(input);  

       alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {  
       public void onClick(DialogInterface dialog, int whichButton) {  
       inputed_value = input.getText().toString();  

         }  
       });  

       alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {  
       public void onClick(DialogInterface dialog, int whichButton) {  

           return;
         }  
      });  

      alert.show();  
}

}

从主要活动致电:

 @Override
public boolean onOptionsItemSelected(MenuItem item){
    switch(item.getItemId()){
    case R.id.add_category_item:
        Add_Category_Dialog add_dialog=new Add_Category_Dialog(getBaseContext());
        add_dialog.showDialog();
        addCategory(add_dialog.inputed_value);
        return true;
    }
    return false;
}

在模拟器运行时运行时出现错误,LogCat:

android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序

UPD 现在我有sqlite错误代码19,约束失败

 private void addCategory(String string){
    SQLiteDatabase db=recipes.getWritableDatabase();
    ContentValues values=new ContentValues();
    values.put(CATEGORY_NAME, string);
    db.insertOrThrow(CATEGORY_TABLE, null, values);
}

1 个答案:

答案 0 :(得分:1)

尝试将getBaseContext()替换为this