AlertDialog的Leanback版本

6
在Android中,制作一个带有“Positive/Negative”按钮的AlertDialog很容易。
new AlertDialog.Builder(getActivity())
           .setTitle("Question?")
           .setPositiveButton("YES", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which) {
                   // User chose YES
               }
           })
           .setNegativeButton("NO", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialogInterface, int i) {
                   // User chose NO
                }
           }).create().show();

我想在我的电视应用中实现同样的功能(询问用户问题,获取是/否回答)。
我找到了两个东西,但都不能解决我的问题:
1. ErrorFragment(接近,但只有一个按钮) 2. GuidedStepFragment(允许我多个选项,但需要创建一个单独的Activity,并且我必须编写自己的代码来将选择的选项传递回第一个Activity)
我感觉我错过了什么。在普通的Android应用程序中,这只是几行代码而已。
我尝试在我的电视应用中使用AlertDialog,但它会抛出关于应用设置了不正确的Theme的错误。此外,我认为那些对话框无法让残障人士友好地使用。
3个回答

9

看起来可以通过在AlertDialog调用中添加主题来实现:

new AlertDialog.Builder(getActivity(), R.style.Theme_AppCompat)
   ....

它使警告对话框全屏并有点丑。有什么想法吗? - Sealer_05
4
请将 @Sealer_05 pass R.style.Theme_AppCompat_Dialog_Alert 或其他适合的对话框样式传递进去,以使其变小。 - f0xik
R.style.Theme_AppCompat_Dialog_Alert 对我来说很好用。 - Khaled Saifullah

1

如果你只想显示一个警告对话框而不抛出错误,那么你可以使用主题构建AlertDialog.Builder,我更喜欢使用AlertDialog.THEME_DEVICE_DEFAULT_DARK

new AlertDialog.Builder(getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_DARK)
       .setTitle("Question?")
       .setPositiveButton("YES", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
               // User chose YES
           }
       })
       .setNegativeButton("NO", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialogInterface, int i) {
               // User chose NO
            }
       }).create().show();

如果您想要构建一个看起来像ErrorFragmentGuidedStepFragmentAlertDialog,我无法帮助您。

编辑:

AlertDialog.THEME_DEVICE_DEFAULT_DARK在API 23中已被弃用,您可以使用android.R.style.Theme_DeviceDefault_Dialog_Alert代替,如下所示:

new AlertDialog.Builder(getActivity(), android.R.style.Theme_DeviceDefault_Dialog_Alert)
       .setTitle("Question?")
       .setPositiveButton("YES", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
               // User chose YES
           }
       })
       .setNegativeButton("NO", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialogInterface, int i) {
               // User chose NO
            }
       }).create().show();

无法解析符号'THEME_DEVICE_DEFAULT_DARK'。它来自哪里? - Drunken Daddy
看看我对这篇帖子所做的修改。 - Omar Hemaia

0

或者,您可以使用一个名为TvDialog的类,该类使用GuidedStepFragment来创建类似于这样的内容:

你可以在这里看到它


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