屏幕变暗但对话框未显示

时间:2016-09-05 16:48:47

标签: android android-fragments dialog android-dialogfragment android-listfragment

我使用适配器在 Fragment 中创建了一个列表。我想在单击列表时为列表中的每个项目显示不同的对话框。我已将监听器添加到列表项中,并为其中一个项(第二个)编写了对话框的代码。但是,当我点击该项目时,手机屏幕变暗但对话框未显示。我在下面添加了相关代码。我在互联网上搜索了很多关于这个问题的内容,并且自己尝试了很多不同的东西,但似乎没什么用。 应用程序中的其他所有工作正常。

任何形式的帮助都将非常感激。 提前谢谢!

DialogFragment类:

public class GenreDialogFragment extends DialogFragment{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    AlertDialog dialog = builder.create();
    builder.setTitle(R.string.title_genre_dialog);
    builder.setMessage("Are you sure?");
    builder.setPositiveButton("OK",  new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // on success
        }
    });
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });

    return dialog;
}
}

Parent Fragment Class,我希望在其中显示对话框:

public class FragmentAddWatchedMovie extends ListFragment{
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    SetListAdapter();
    SetClickListener();

}
private void SetClickListener() {
    ListView listView = (ListView) getView().findViewById(android.R.id.list);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position){
                case 0:{
                    FragmentManager manager = getFragmentManager();
                    GenreDialogFragment fragment = new GenreDialogFragment();
                    fragment.setTargetFragment(FragmentAddWatchedMovie.this,0);
                    fragment.show(manager, "GenreDialog_Fragment");
                    break;

                }
                case 1:{

                }
                case 2:{

                }
                case 3:{

                }
                case 4:{

                }
                case 5:{

                }
            }

        }
    });

}

1 个答案:

答案 0 :(得分:4)

移动以下行:“AlertDialog dialog = builder.create();”正好在Dialog类的返回行上方。

这对您不起作用,因为您在构建器上设置首选项之前创建了对话框:)