私はTabHostに2つのフラグメント、両方のリストを持っています。 onCreateContextMenuは両方とも正常に動作しますが、両方のonContextItemSelectedは最初のFragmentクラスを指しています。私はXMLファイルのリストに異なる名前を使用しているので、IDは同じではありません。ここでTabHostを使用したコンテキストメニューの問題
は、第1はかなりちょうどVAR名の変更と同じコードで、最初のフラグメントのためonContextItemSelected両方onCreateContextMenu
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
int itemID = info.position;
Map m = (HashMap) this.listView.getAdapter().getItem(itemID);
menu.setHeaderTitle(getString(R.string.options));
menu.add(0, v.getId(), 0, activity.getString(R.string.delete));
}
そして、ここのコードです。実際には、このメソッドは最初のフラグメントでのみ実行されるため、これは何も問題には変わりません。これは、2番目のリストにあるときでもあります。
@Override
public boolean onContextItemSelected(MenuItem item) {
ContextMenuInfo menuInfo = (ContextMenuInfo) item.getMenuInfo();
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
int itemID = info.position;
Map m = (HashMap) this.listView.getAdapter().getItem(itemID);
processId = Integer.parseInt(m.get("processId").toString());
activity.setSupportProgressBarIndeterminateVisibility(true);
runBackground(activity.getString(R.string.accessingECM), false, false, ACTION_REMOVE);
return true;
}
これは、onActivityCreatedメソッドのコンテキストメニューに登録する方法です。 onCreateContextMenuは、両方のFragmentで機能することに注意してください。
listView = (ListView) this.view.findViewById(R.id.listProcess);
registerForContextMenu(listView);
menu.add()の第1パラメータと第3パラメータを(1,1)と(1,2)に変更しようとしました。また、両方ともMenu.NONEにしようとしました。まだ動作しません。 (私の経験で)tabhostについては
おかげ
それぞれのリストをコンテキストメニューに登録する場所を教えてください – Barak
ok、上に編集されたコード – alexandrenofre
私の回答が役に立ったら、その横のチェックマークをクリックして回答を受け入れてください/質問が解決/回答されました)。 – Barak