【发布时间】:2015-01-09 08:00:24
【问题描述】:
我的活动包含两个片段,用同一个类实例化。
使用上下文菜单,当我从第二个片段/列表视图中选择菜单操作时,记录实例成员显示仅从第一个片段实例调用 onContextItemSelected:
public class LikedFragment extends Fragment {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mMyInstanceId = getArguments().getString("fragmentId"); // "first" or "second"
}
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.my_fragment, container, false);
mAdapter = new MyAdapter(mActivity, MyQueries.getMyCursor(mMyInstanceId));
AbsListView listView = (AbsListView) mView.findViewById(android.R.id.list);
listView.setAdapter(mAdapter);
listView.setOnCreateContextMenuListener(this);
return mView;
}
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getActivity().getMenuInflater().inflate(R.menu.menu_item_liked, menu);
Log.d(TAG, mMyInstanceId); // OKAY: logs "second"
}
@Override public boolean onContextItemSelected(MenuItem item) {
Log.d(TAG, mMyInstanceId); // FAIL: logs "first"
/* ... */
}
}
如何在 onContextItemSelected 中获取正确的实例?
【问题讨论】:
-
什么是 mMyInstanceId?
-
一个字符串作为bundle参数传递来区分两个片段实例,我会更新代码