标签: android-dialog

如何在Android中扩展Application的类中显示Dialog Box?

我希望在特定条件之后显示一个对话框,但是对于现在的演示,我想从扩展应用程序的类中显示一个对话框.这是我的代码

public class ControlApplication extends Application
{
    @Override
    {
    super.onCreate();
    final Dialog dialog = new Dialog ( getApplicationContext() ); 
    dialog.setTitle("zakasssssssssssssssssss");
    dialog.setCancelable(false);
    dialog.show();
}
Run Code Online (Sandbox Code Playgroud)

}

但是在dialog.show()我得到的错误就像

Attempted to add window with non-application token WindowToken{4067a268 token=null}.  Aborting.
D/AndroidRuntime( 1923): Shutting down VM
W/dalvikvm( 1923): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime( 1923): FATAL EXCEPTION: main
E/AndroidRuntime( 1923): java.lang.RuntimeException: Unable to create application 
com.test.shrenik.ControlApplication: android.view.WindowManager$BadTokenException: 
Unable to add window -- token null is not for an application
E/AndroidRuntime( 1923):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3275)
E/AndroidRuntime( …
Run Code Online (Sandbox Code Playgroud)

android android-dialog

17
推荐指数
2
解决办法
1万
查看次数

Android:在容器的中心显示自定义对话框

如何将自定义对话框显示为容器的中心?

Dialog customdialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar); 
Window window = customdialog.getWindow();
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
window.setGravity(Gravity.CENTER);
Run Code Online (Sandbox Code Playgroud)

R.style.Theme_Translucent_NoTitleBar - 用于删除cutomdialog的边框.一旦我使用此行,对话框将出现在平板电脑的顶部角落?

任何人都可以帮我解决这个问题吗?

android android-dialog

17
推荐指数
2
解决办法
2万
查看次数

DialogFragment按钮在棒棒糖中的颜色变化

我希望我的片段看起来与我应用的其他应用程序和调色板一致,所以我想改变标题的颜色,还要改变正/负按钮的颜色: 在此输入图像描述

我尝试这样做,但不幸的是它不起作用:

public void onStart() {
        super.onStart();
        Dialog d = getDialog();
        int dividerId = d.getContext().getResources().getIdentifier("android:id/titleDivider", null, null);
        View divider = d.findViewById(dividerId);

        if(currentapiVersion< Build.VERSION_CODES.LOLLIPOP) {
            divider.setBackgroundColor(getResources().getColor(R.color.accent));
            LinearLayout ll = (LinearLayout) d.findViewById(R.id.dialog_background);
            ll.setBackgroundResource(R.drawable.backrepeat_reversed);
        }
        if(currentapiVersion == Build.VERSION_CODES.LOLLIPOP) {
            int buttonsId = d.getContext().getResources().getIdentifier("android:id/negativeButton", null, null);
            Button b = (Button) d.findViewById(buttonsId);
            b.setTextColor(getResources().getColor(R.color.accent));
        }
        int textViewId = d.getContext().getResources().getIdentifier("android:id/alertTitle", null, null);
        TextView tv = (TextView) d.findViewById(textViewId);

        tv.setTextColor(getResources().getColor(R.color.accent));
    }
Run Code Online (Sandbox Code Playgroud)

如何更改这些按钮的颜色?也许可以通过styles.xml文件在整个应用程序中完成它?

android android-dialog android-dialogfragment android-5.0-lollipop

17
推荐指数
2
解决办法
6910
查看次数

如何防止 BottomSheetDialogFragment 在导航到另一个片段后消失?

我正在NavigationComponent我的应用程序上使用。

我有一个特定的流程,点击BottomSheetDialogFragment应用程序的按钮后应该导航到另一个片段。但是当弹出该 Fragment 时,我需要导航回上一个BottomSheetDialogFragment.

由于某种原因,该请求BottomSheetDialogFragment被自动驳回。

Frag A : click on a button  
Frag A -> Dialog B : click on a button  
Frag A -> Dialog B -> Frag C : pop Frag C from the stack  
Frag A : Dialog B was automatically dismissed =;/  
Run Code Online (Sandbox Code Playgroud)

如何才能防止这种解雇呢?


问:为什么我需要BottomSheetDialogFragment不解雇?
A:我通过.a监听打开片段的结果LiveData。由于解雇,BottomSheetDialogFragment它永远不会收到结果。

android android-dialog android-dialogfragment android-navigation android-bottomsheetdialog

16
推荐指数
1
解决办法
4061
查看次数

在`Thread.setDefaultUncaughtExceptionHandler`中显示一个对话框

当我的android应用程序抛出异常时,我想显示一个自定义对话框告诉用户发生了错误,所以我Thread.setDefaultUncaughtExceptionHandler用来设置一个全局异常处理程序:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread thread, final Throwable ex) {
                AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
                builder.setTitle("There is something wrong")
                        .setMessage("Application will exit?" + ex.toString())
                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                // throw it again
                                throw (RuntimeException) ex;
                            }
                        })
                        .show();
            }
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

但我发现它有任何异常抛出,AlertDialog不会显示,而是应用程序阻塞,过了一会儿,它会显示一个系统对话框:

X app is not responding. Would you like to close …
Run Code Online (Sandbox Code Playgroud)

android exception-handling android-alertdialog android-dialog

15
推荐指数
2
解决办法
1万
查看次数

如何在 Jetpack Compose 对话框中的系统状态栏后面绘制

我禁用了fitSystemWindowsviaWindowCompat.setDecorFitsSystemWindows(window, false)在状态栏后面绘制,并且我正在使用insets accompanist 库来获取相应的插图,以将填充添加到特定的可组合项。

但是,如果我显示全屏对话框,该对话框仍然具有系统栏和导航栏的填充,并且拒绝在状态栏后面绘制。

该对话框类似于以下代码片段:

Dialog(
    onDimissRequest = {},
    properties = DialogProperties(usePlatformDefaultWidth = false)
) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

是否需要任何其他设置才能让对话框绘制在系统状态栏后面?

android android-dialog android-dialogfragment android-jetpack-compose

15
推荐指数
1
解决办法
2484
查看次数

如何删除对话框外的透明深色背景

我想删除对话框外的透明暗背景.

在此输入图像描述

我尝试过:

final Dialog dialog = new Dialog(this);
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.WHITE));
        this.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.WHITE));
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.spinner_layout);
         getWindow().getDecorView().setBackgroundResource(android.R.color.transparent);
Run Code Online (Sandbox Code Playgroud)

android android-dialog

14
推荐指数
3
解决办法
1万
查看次数

从Dialog窗口调用onContextItemSelected时不会触发它

Dialog dialog;

private void opendialog() {
    dialog = new Dialog(MainActivity.this);
    dialog.setContentView(R.layout.popup);
    dialog.setTitle(R.string.msettings);
    RelativeLayout reply_layout = (RelativeLayout) dialog
            .findViewById(R.id.reply_layout);
    final RelativeLayout ringtone_layout = (RelativeLayout) dialog
            .findViewById(R.id.ringtone_layout);
    registerForContextMenu(ringtone_layout);

    ringtone_layout.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            openContextMenu(ringtone_layout);
        }
    });
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("Select The Action");
    menu.add(0, v.getId(), 0, "Edit");
    menu.add(0, v.getId(), 1, "Delete");
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    System.out.println("Inside onContextItemSelected");
    return super.onContextItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)

在Dialog中使用上下文菜单时,永远不会调用onContextItemSelected.我的代码有什么问题吗?提前致谢..

android android-dialog

14
推荐指数
1
解决办法
1172
查看次数

对话框中的自定义复选框样

我正在构建一个包含多项选项(复选框)的对话框:

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setMultiChoiceItems(arrayResource, selectedItems, new DialogInterface.OnMultiChoiceClickListener() {
    // ...
});

AlertDialog dialog = builder.create();
dialog.show();
Run Code Online (Sandbox Code Playgroud)

我有一个复选框的自定义样式:

<style name="CustomCheckBox" parent="@android:style/Widget.CompoundButton.CheckBox">
    <item name="android:button">@drawable/btn_check</item>
    <item name="android:textColor">@android:color/holo_purple</item>
</style>
Run Code Online (Sandbox Code Playgroud)

通过设置应用于布局中的各个复选框时,它可以很好地工作style="@style/CustomCheckBox".

但是,如何将此样式应用于创建的对话框?或者对整个主题来说......

如果它有点相关 - 我正在使用minSdkVersion=14targetSdkVersion=19.


更新:

现在根据MattMatt的回答,我将自定义复选框样式应用于整个主题,并为对话框设置自定义样式:

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:checkboxStyle">@style/CustomCheckBox</item>
    <item name="android:dialogTheme">@style/CustomDialog</item>
    <item name="android:alertDialogTheme">@style/CustomDialog</item>
</style>

<style name="CustomCheckBox" parent="@android:style/Widget.CompoundButton.CheckBox">
    <item name="android:button">@drawable/btn_check</item>
    <item name="android:checkMark">@drawable/btn_check</item>
</style>

<style name="CustomDialog" parent="@android:style/Theme.Holo.Light.Dialog">
    <item name="android:checkboxStyle">@style/CustomCheckBox</item>
    <item name="android:background">#aaf</item>
</style>
Run Code Online (Sandbox Code Playgroud)

现在添加到布局的任何复选框都会获得自定义样式,我可以更改对话框的背景,但对话框中的复选框不会受到任何影响......

checkbox android android-theme android-dialog android-styles

13
推荐指数
1
解决办法
2万
查看次数

如何禁用BottomSheetDialogFragment拖动

如何禁用BottomSheetDialogFragment手指拖动?

我看到了类似的问题,但他们BottomSheet都不是BottomSheetDialogFragment.

android android-layout android-view android-dialog bottom-sheet

13
推荐指数
7
解决办法
8418
查看次数