2017-07-05 10 views
1

私はViewPagerを使用しています。私は2つのタブを持っており、その結果、それぞれに独自のコンテキストメニューオプションを持つ2つの断片があります。私の問題は、フラグメントAのメソッドonContextItemSelected()が呼び出された、フラグメントBのコンテキストメニューオプションをクリックするときです。これをどうすれば解決できますか?2つのフラグメントを持つonContextItemSelectedの問題

私は、公式のAndroidドキュメントに示すと同じ操作を行います。 https://developer.android.com/guide/topics/ui/menus.html#context-menu

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 

    PositionClicked = info.position; 

    switch (item.getItemId()) { 

     case R.id.menu_edit: 
      return true; 

     case R.id.menu_archive: 
      return true; 

     case R.id.menu_report: 
      return true; 

     case R.id.menu_delete: 
      Log.i(TAG, "Delete Menu Buttom"); 

      new AlertDialog.Builder(getActivity()).setTitle("Tem certeza?") 
       .setMessage("Você está prestes a deletar sua Postagem!") 
       .setPositiveButton("Deletar", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 

         //ShowSwipeRefreshin(); 

         delete_item(MongodbObjtoDelete); 

         DialogResp = true; 
         feedItems.remove(PositionClicked); 
         listAdapter.notifyDataSetChanged(); 
        } 
       }).setNegativeButton("Cancelar", null).show(); 

      return true; 

     default: 
      return super.onContextItemSelected(item); 
    } 
} 
+0

あなたのコードを追加します。 'onOptionsItemSelected' –

+0

私は今追加しました! @OussemaAroua。ありがとう。 –

+0

どのようにコンテキストメニューにメニューを追加しましたか?どうやってそれを作ったの? –

答えて

2

あなたはこのようにそれを修正することができますのContextMenu

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; 
     menu.setHeaderTitle(""); 
     menu.setHeaderIcon(""); 
     String[] menuItems = getResources().getStringArray(R.array.ContextMenu); 
     for (int I = 0; I < menuItems.length; I++) { 
      menu.add(Menu.NONE, I, I, menuItems[I]); 
     } 
    } 
    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
     int menuItemIndex = item.getItemId(); 

     if(menuItemIndex == 0){ 
      //do something 
     } 

     return true; 
    } 

作業の

FragmentManager manager = getFragmentManager(); 
if (manager.findFragmentByTag("frag1").isVisible()){ 
    // do fragment 1 
}else{ 

} 
+0

これは私の問題を解決しました!それほどたくさん! –

1

例コンテキストメニューに登録されているビューも確認します。

registerForContextMenu(view); 
+0

これも機能しますが、Oussemaのソリューションは私のコードを少し変更しています。どうもありがとうございます!! –

関連する問題