2011-03-03 6 views
9

コンテキストメニューに次のコードを使用していて、ユーザーが削除を選択した場合、ダイアログマッサージが表示されます。

infos.setOnCreateContextMenuListener(new OnCreateContextMenuListener(){ 
      //@Override 
      public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
       menu.setHeaderTitle("Context Menu"); 
       menu.add(0, CONTEXT_EDIT, 0, "Edit Item"); 
       menu.add(0, CONTEXT_DELETE, 1, "Delete Item"); 
      } 
}); 

public boolean onContextItemSelected(MenuItem item) { 

     AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
     final Long _id = menuInfo.id; 
     //selected_row = menuInfo.position; 

     // To get the id of the clicked item in the list use menuInfo.id 
     switch (item.getItemId()) { 
      case CONTEXT_EDIT: 
       addEditRes(_id); 
       break; 
      case CONTEXT_DELETE: 
       AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       builder.setMessage("Are you sure you want to delete?") 
         .setCancelable(false) 
         .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           infoDataHelper.deleteRes(_id); 
           model = infoDataHelper.getCursor(addType); 
           adapter.changeCursor(model); 
          } 
         }) 
         .setNegativeButton("No", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           dialog.cancel(); 
          } 
         }); 
       AlertDialog alert = builder.create(); 
       alert.show(); 
       break; 
      default: 
       return super.onContextItemSelected(item); 

     } 
     adapter.notifyDataSetChanged(); 
     return true; 
} 

ただし、すぐに削除を選択すると、次のエラーが発生しています。

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

私のコードの問題点は何ですか?

答えて

6

AlertDialog.Builder builder = new AlertDialog.Builder(this.getParent());

アクティビティが別のタブアクティビティ内のタブアクティビティにあるためです。

28

私はこの問題は、このライン上に置くことができ信じて:あなたのアクティビティの名前でMyActivityNameの交換

AlertDialog.Builder builder = new AlertDialog.Builder(MyActivityName.this); 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

はそれを修正してください。

エラーを修正しましたか?

+0

私のために修正されました!ありがとう:) –

6

同じエラーが発生しました。 は、私は今、正常に動作し

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 

そのに

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

を変更しました。ありがとう。

関連する問題