我有用于显示自定义对话框的课程
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);
}
答案 0 :(得分:1)
尝试将getBaseContext()
替换为this
。