当显示DialogFragment时,ListView会丢失所有选择

时间:2013-08-04 13:52:46

标签: android android-fragments android-dialogfragment

我有一个包含ListView的片段,当我尝试在其顶部显示DialogFragment时,取消选择所选列表项。当DialogFragment出现/消失时,是否可以保留所选项目?

My Fragment的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..

屏幕截图:

enter image description here enter image description here

正如您在第二个屏幕截图中看到的那样,已取消选择列表视图的所选项目。我该如何防止这种情况?

更新:我正在使用StyledDialogs

1 个答案:

答案 0 :(得分:1)

找到解决方案,问题是我在mode.finish()之后立即呼叫dialogfragment.show()。我存储了ActionMode变量,并在我的DialogFragments正按钮回调中使用它来调用.finish(),而且一切正常。