标签: android-dialog

如何通过单击对话框外部来关闭对话框?

我为我的应用程序实现了一个自定义对话框.我希望实现当用户在对话框外单击时,对话框将被取消.我该怎么做?

android dialog android-emulator android-layout android-dialog

150
推荐指数
8
解决办法
14万
查看次数

Android'无法添加窗口 - 令牌null不适用于应用程序'异常

当我尝试打开对话框时,我收到以下Android异常.有人可以帮我理解发生了什么,我该如何解决这个问题?

android.view.WindowManager$BadTokenException: 
  Unable to add window -- token null is not for an application
    at android.view.ViewRoot.setView(ViewRoot.java:509)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
    at android.app.Dialog.show(Dialog.java:241)
Run Code Online (Sandbox Code Playgroud)

android runtimeexception android-dialog android-windowmanager

134
推荐指数
4
解决办法
13万
查看次数

从片段显示对话框?

我有一些需要显示常规对话框的片段.在这些对话框中,用户可以选择是/否答案,然后片段应该相应地运行.

现在,Fragment该类没有onCreateDialog()覆盖的方法,所以我想我必须在包含的外部实现对话框Activity.没关系,但是Activity需要以某种方式向片段报告所选择的答案.我当然可以在这里使用回调模式,因此片段在Activity一个监听器类中注册自己,而Activity会通过它报告回答,或类似的东西.

但对于一个简单的任务来说,这似乎是一个相当大的混乱,因为在一个片段中显示一个"简单的"是 - 否对话框.而且,这样我的Fragment自足也会减少.

有没有更清洁的方法来做到这一点?

编辑:

这个问题的答案并没有真正详细解释如何使用DialogFragments来显示Fragments中的对话框.所以AFAIK,走的路是:

  1. 显示片段.
  2. 需要时,实例化DialogFragment.
  3. 将原始Fragment设置为此DialogFragment的目标,使用.setTargetFragment().
  4. 使用原始片段中的.show()显示DialogFragment.
  5. 当用户在此DialogFragment上选择一些选项时,通知原始片段有关此选择(例如,用户单击"是"),您可以使用.getTarget()获取原始片段的引用.
  6. 关闭DialogFragment.

android android-dialog android-dialogfragment

114
推荐指数
4
解决办法
12万
查看次数

如何在Android警报对话框中添加第三个按钮?

API说警报对话框可以有一个,两个或三个按钮,但SDK只允许正面和负面按钮.那怎么可以添加第三个按钮?

android android-alertdialog android-dialog

113
推荐指数
5
解决办法
8万
查看次数

如何在对话框中保持沉浸式模式?

当我的活动显示自定义对话框时,如何保持新的沉浸式模式?

我正在使用此代码来维护对话框中的沉浸模式,但是使用此解决方案,当我启动自定义对话框时,NavBar会出现不到一秒钟,然后它就会消失.

这是一个更好地解释问题的视频(当NavBar出现时查看屏幕底部):http://youtu.be/epnd5ghey8g

我该如何避免这种行为?

我申请中所有活动的父亲:

public abstract class ImmersiveActivity extends Activity {

    @SuppressLint("NewApi")
    private void disableImmersiveMode() {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_FULLSCREEN
            );
        }
    }

    @SuppressLint("NewApi")
    private void enableImmersiveMode() {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            getWindow().getDecorView().setSystemUiVisibility(
                      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
                    | View.SYSTEM_UI_FLAG_FULLSCREEN 
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            );
        }
    }


    /**
     * Set the Immersive mode or not according to its state in the settings:
     * enabled or not.
     */
    protected void updateSystemUiVisibility() {
        // Retrieve …
Run Code Online (Sandbox Code Playgroud)

android dialog android-dialog android-activity android-4.4-kitkat

100
推荐指数
5
解决办法
3万
查看次数

如何在android中制作带圆角的自定义对话框

我想做的是:我正在尝试制作自定义对话框.圆角.

什么是happing:我能够进行自定义对话,但它没有圆角.我尝试添加一个选择器,但我还是不能


Java代码:

private void launchDismissDlg() {

        dialog = new Dialog(getActivity(), android.R.style.Theme_Dialog);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.dlg_dismiss);
        dialog.setCanceledOnTouchOutside(true);

        Button btnReopenId = (Button) dialog.findViewById(R.id.btnReopenId);
        Button btnCancelId = (Button) dialog.findViewById(R.id.btnCancelId);

        btnReopenId.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {



            }
        });


        btnCancelId.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {



            }
        });
        dialog.setCanceledOnTouchOutside(false);
        dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
        dialog.show();

    }
Run Code Online (Sandbox Code Playgroud)

xml代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical" >

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:gravity="center" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android android-custom-view android-dialog

94
推荐指数
14
解决办法
10万
查看次数

无法使自定义DialogFragment在Fragment上透明

我需要在片段上创建一个对话框(占据整个屏幕).该对话框需要是一个浮动对话框,它将定位在片段上,片段在片段外面变暗.

对于自定义对话框,我有一个具有弯曲边缘的linearLayout,无论我做什么,对话框都有一个黑色边缘(非常小).我已经尝试了一切使其透明并消失(所以所有的对话框只是线性布局 - 弯曲的盒子)

对于DialogFragment,这就是我对onCreateView的看法

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    LinearLayout layout =(LinearLayout)inflater.inflate(R.layout.custom_dialog, null);
    LinearLayout item = (LinearLayout)layout.findViewById(R.id.display_item);
    populateItemData(item, inflater);
    return layout;
}
Run Code Online (Sandbox Code Playgroud)

custom_dialog只是一个将android:backgroung设置为#000000的LinearLayout

这是我自定义Dialog的样式

<style name="CustomDialog" parent="android:style/Theme.Dialog">
    <item name="android:windowBackground">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:alwaysDrawnWithCache">false</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我尝试了这种风格的各种组合(从我在网上看到的)并且我无法摆脱那种恼人的黑色边界,如果我将LinearLayout背景设置为除了以外的任何其他颜色,我可以将其绘制为白色或任何其他颜色#000000 ...

我已经花了3-4个小时,我希望其他人可以帮忙...

android android-layout android-fragments android-dialog android-dialogfragment

93
推荐指数
7
解决办法
5万
查看次数

如何创建数字选择器对话框?

我希望能够创建一个允许用户从指定范围中选择一个数字的Dialog.

我知道现有的小部件(比如来自quietlycoding的那些小部件和SimonVT的小部件)已经做到了,但是我很难将这些小部件正确地集成到我的应用程序中.此外,这些主要是小部件.我想要的东西与android开发者页面教程中的东西非常相似.

我还检查了NumberPicker的文档,它说要检查TimePicker和DatePicker的示例,但它们只显示如何使用时间和日期选择器,我很难感觉到我的方式绕过代码并尝试转换时间选择器只是一个正常的数字选择器.有谁知道从哪里开始?我一直在寻找最近3个小时的解决方案无济于事.

android android-ui android-dialog numberpicker

70
推荐指数
5
解决办法
13万
查看次数

在应用程序处于后台时解除DialogFragment的正确方法

我开始使用DialogFragment,因为他们通过方向更改和其他东西很好地工作.但是我遇到了令人讨厌的问题.

我有AsyncTask显示进度DialogFragment并解散它onPostExecute.一切正常,除非在onPostExecute应用程序处于后台时发生(例如,在按下Home按钮后).然后我在DialogFragment解雇时得到了这个错误 - " Can not perform this action after onSaveInstanceState".卫生署.常规对话框工作得很好.但不是FragmentDialog.

所以我想知道,在应用程序处于后台时,解雇DialogFragment的正确方法是什么?我没有真正使用Fragments,所以我认为我只是遗漏了一些东西.

android android-fragments android-dialog android-dialogfragment

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

使用dialogfragment从datepicker获取日期

我正在使用谷歌示例使用对话框片段在我的应用程序中插入一个日期选择器
http://developer.android.com/guide/topics/ui/controls/pickers.html

但是我不确定如何在设置之后获得日期(不是java专家).对话框和日期选择器运行正常,我可以记录该日期是否已正确设置但是,如何才能在父活动上执行回调?

这是我的Dialog片段

public class DatePickerFragment extends DialogFragment implements
        DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {
        **Log.w("DatePicker","Date = " + …
Run Code Online (Sandbox Code Playgroud)

android datepicker android-datepicker android-dialog

52
推荐指数
4
解决办法
7万
查看次数