views:

62

answers:

1

I have class for showing custom 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();  
}

}

Calling from main activity:

 @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;
}

When running in emulator runtime error occures, LogCat:

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

UPD Now I have sqlite error code 19, constraint failed

 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  A: 

Try replacing getBaseContext() with this.

CommonsWare