Android 显示DialogFragment时,ListView将丢失所有选择
我有一个片段包含一个Android 显示DialogFragment时,ListView将丢失所有选择,android,android-fragments,android-dialogfragment,Android,Android Fragments,Android Dialogfragment,我有一个片段包含一个列表视图,当我试图在其顶部显示一个对话框片段时,所选列表项将被取消选择。当对话框片段出现/消失时,是否可以保留选中的项目 我的片段的onCreateView(): @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if
列表视图
,当我试图在其顶部显示一个对话框片段
时,所选列表项将被取消选择。当对话框片段
出现/消失时,是否可以保留选中的项目
我的片段的onCreateView():
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (DEBUG) {
Log.d(TAG, "BrowserFragment.onCreateView()");
}
View v = inflater.inflate(R.layout.fragment_filebrowser, container,
false);
listView = (ListView) v.findViewById(android.R.id.list);
listView.setAdapter(mAdapter);
listView.setOnItemClickListener(this);
listView.setEmptyView(v.findViewById(android.R.id.empty));
// FOR CONTEXT ACTION MENU
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.contexual, menu);
mode.setTitle("Choose Files");
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
Log.d(TAG, "onDestroyActionMode!");
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_delete:
SimpleDialogFragment
.createBuilder(getActivity(),
getActivity().getSupportFragmentManager())
.setTitle(R.string.delete_files)
.setMessage(R.string.confirm_delete)
.setPositiveButtonText(R.string.yes)
.setNegativeButtonText(R.string.no).show();
mode.finish();
//The rest of the program..
屏幕截图:
正如您在第二个屏幕截图中所看到的,listview的选定项已被取消选择。我怎样才能防止呢
更新:我正在使用库找到了解决方案,问题是我在
对话框fragment.show()之后调用了mode.finish()
。我存储了ActionMode
变量,并在我的DialogFragments
正面按钮回调中使用它来调用.finish()
,而一切都正常工作。找到了解决方案,问题是我在dialogfragment.show()之后调用了mode.finish()
。我存储了ActionMode
变量,并在我的DialogFragments
positive按钮回调中使用它来调用.finish()
,一切正常