屏幕变暗但未出现对话框

6
我已经在一个适配器中创建了一个片段的列表。我希望在点击每个列表项时显示不同的对话框。我已经为列表项添加了监听器,并编写了代码以使对话框出现在其中一个项目上(第二个)。然而,当我点击该项时,手机屏幕变暗,但对话框没有出现。我在下面添加了相关代码。我在互联网上搜索了很多关于这个问题的资料,并尝试了很多不同的方法,但似乎没有任何作用。 应用程序中的其他所有内容都正常工作。
非常感谢您提供任何形式的帮助。 提前致谢!
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;
}
}

我想让对话框出现在父片段类中:

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:{

                }
            }

        }
    });

}

请尝试将 "AlertDialog dialog = builder.create();" 移动到 return 语句的上方。 - Cata
成功了!非常感谢 :) - Khursand Shakeel
1个回答

5

Dialog类的返回行的上方,移动以下行:AlertDialog dialog = builder.create();

那不起作用是因为你在设置构建器首选项之前创建了对话框 :)


我遇到了类似的错误。我在MyDialog.onCreate()中设置了所有对话框选项(标题、消息、按钮)。由于新版Android系统发生了一些变化,导致对话框没有显示出来。我将几乎所有的代码都移动到了MyDialog()构造函数中,然后一切都解决了。 - Borzh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接