标签: android-alertdialog

自定义AlertDialog没有显示

我有一个TextViewer Activity,它有一个按钮,当我点击它时,我想弹出一个带有列表的AlertDialog.我按照这个链接但它不起作用(没有弹出窗口).我认为背景是错误的.我使用了以下代码:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.resources);
    ImageButton btnlist = (ImageButton)findViewById(R.id.list);
    btnlist.setOnClickListener(new View.OnClickListener() {
             public void onClick (View v){                  

              if (Vars.bookchapter>1){
               final CharSequence[] items = {"Red", "Green", "Blue"};
               Context mContext = getBaseContext();
               AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
               builder.setTitle("Pick a color");
               builder.setItems(items, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int item) {
                       Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
                   }
               });
               AlertDialog alert = builder.create();
              }else{
               //Nothing
              }
             }});         
     }
        }
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog

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

当警报对话框打开且手机(模拟器)更改其方向时,应用程序崩溃

伙计们我一整天都在搜索和研究这个问题.该应用程序不仅在对话框打开时崩溃,而且在旋转器打开时崩溃(我确信这将是一堆我没有遇到过的其他情况).

在onRetainNonConfigurationInstance()和onConfigurationChanged(配置newConfig)之间进行选择对我没有帮助.(也许我错了) - 实际上我更喜欢使用第一个.

但我想问:对于一个打开的对话框或打开的微调器,我是否必须从头开始创建所有内容?这是一种方式吗?有时,用户可能会改变方向,重新初始化一个包含大量小部件的大班级是没有价值的.

请给我提示和指导.提前致谢.

编辑:::

Error code:

01-25 17:56:48.182: ERROR/WindowManager(312): Activity XXX has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@43e63058 that was originally added here
01-25 17:56:48.182: ERROR/WindowManager(312): android.view.WindowLeaked: Activity XXX has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@43e63058 that 
was originally added here
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.view.ViewRoot.<init>(ViewRoot.java:247)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.app.Dialog.show(Dialog.java:241)
01-25 17:56:48.182: ERROR/WindowManager(312):     at XXX.menuGroupDialog(XXX.java:946)
0    1-25 17:56:48.182: ERROR/WindowManager(312):     at XXX.onOptionsItemSelected
(GroupManagement.java:257)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.app.Activity.onMenuItemSelected(Activity.java:2195)01-25 …
Run Code Online (Sandbox Code Playgroud)

android dialog spinner orientation android-alertdialog

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

警报对话框和ASync任务

我试图在活动中使用警报对话框和异步任务,并收到以下错误

引起:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序

码:

public class loginTask extends AsyncTask<Void, Void, Void> {
    public ProgressDialog loginDialog = new ProgressDialog(
            LoginActivity.this);

    @Override
    protected void onPreExecute() {
        loginDialog.setMessage("Please wait Logging in");
        loginDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {

        if(loginUser()) {
            loginDialog.dismiss();
            alertbox("title", "winnn", "Okay");
        } else {
            loginDialog.dismiss();
            alertbox("title", "message", "Okay");
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void unused) {
        loginDialog.dismiss();
        Intent intentHome = new Intent(LoginActivity.this,
                HomeActivity.class);
        startActivity(intentHome);
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-asynctask android-alertdialog

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

在alertDialog中使用微调器时出现空指针异常

这是我写的代码:

// create a view in dialog box
final View fileView = getLayoutInflater().inflate(R.layout.filename, null);
String[] array_spinner = new String[5];
array_spinner[0]="1";
array_spinner[1]="2";
array_spinner[2]="3";
array_spinner[3]="4";
array_spinner[4]="5";

Spinner s = (Spinner) findViewById(R.id.sp_CAT);
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_spinner_item, array_spinner);
s.setAdapter(adapter);
s.setSelection(2);

//Spinner mCAT = (Spinner) findViewById(R.id.sp_CAT);
//ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
//fileView.getContext(), R.array.a_CAT, android.R.layout.simple_spinner_item);
//adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//mCAT.setAdapter(adapter);

EditText mSID = (EditText) fileView.findViewById(R.id.et_SID);
EditText mSCD = (EditText) fileView.findViewById(R.id.et_SCD);
EditText mNUM = (EditText) fileView.findViewById(R.id.et_NUM);
final String tSID=mSID.getText().toString();
final String tSCD=mSCD.getText().toString();
final String tNUM=mNUM.getText().toString();

// show dialog box …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception spinner android-alertdialog

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

java.lang.NoSuchMethodError:android.app.AlertDialog $ Builder

我正在收到关于这个特殊异常的报告,它让我很难过,没有任何运气来寻找它.这个应用程序已经在少数几个不同的设备上进行了测试,没有任何类似的东西.

奇怪的是,用户第一次运行应用程序时,AlertDialog.Builder会创建并显示一个,因此AlertDialog.Building很可能是设备上的真实方法.文档还告诉我它自API级别1以来也存在.

例外是否可以指其他一些问题?

例外情况发生在运行2.3.6的GT-N7000 Galaxy Note上.

对堆栈跟踪进行反混淆处理:

java.lang.NoSuchMethodError: android.app.AlertDialog$Builder.
at com.slowchop.wifiheat.lib.heat.Filter.void showSubjectDialog(java.lang.String,java.lang.String)(SourceFile:143)
at com.slowchop.wifiheat.lib.heat.Filter.void showChangeAccessPoint()(SourceFile:128)
at com.slowchop.wifiheat.lib.heat.HeatActivity.boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem)(SourceFile:475)
at android.support.v4.app._ActionBarSherlockTrojanHorse.boolean onMenuItemSelected(int,com.actionbarsherlock.view.MenuItem)(SourceFile:119)
Run Code Online (Sandbox Code Playgroud)

方法包括:

private void showSubjectDialog(String title, final String filter) {
    new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK)
            .setTitle(title)
            .setAdapter(subjectAdapter, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int i) {
                    ListItem item = (ListItem)subjectAdapter.getItem(i);
                    updateFilterFromAlertDialog(dialog, filter, item.id);
                }
            }).show();
}
Run Code Online (Sandbox Code Playgroud)

第143行是:

    new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK)
Run Code Online (Sandbox Code Playgroud)

还有另一个堆栈跟踪来自不同的路径,但继续以showChangeAccessPoint()相同的方式调用.在这种情况下,AlertDialog.Builder从另一个调用错误AlertDialog.Builder!:

java.lang.NoSuchMethodError: android.app.AlertDialog$Builder.
at com.slowchop.wifiheat.lib.heat.Filter.void showSubjectDialog(java.lang.String,java.lang.String)(SourceFile:143)
at com.slowchop.wifiheat.lib.heat.Filter.void showChangeAccessPoint()(SourceFile:128)
at com.slowchop.wifiheat.lib.heat.Filter$2.void …
Run Code Online (Sandbox Code Playgroud)

android exception android-alertdialog

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

Android - 使AlertDalog按钮的大小统一

我有一个警告对话框,其中以编程方式添加了正面和负面按钮.在对话框布局中,还有两个按钮,位于AlertDialog的本机按钮上方.

对话

当这两者紧挨着时,我意识到在这个对话框中,原生正/负/中性按钮的权重不同.它们的文本内容决定了它们的水平权重,而不是每个占用对话框的50%(如果有3个按钮则为33%).所以在我的情况下,负片按钮的文本比正面按钮的文本长,我们得到的东西看起来像我上面发布的图像.

我找不到办法解决这个问题,有没有人有想法?

谢谢!

要求的XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

    <TextView android:id="@+id/rcd_msg"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_centerHorizontal="true"
              android:layout_margin="8dp"
              android:text="@string/rating_dialog_text"
              android:textSize="14dp"
              android:textColor="@android:color/white"
              android:gravity="center"/>

    <RatingBar android:id="@+id/rcd_rating_bar"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_below="@id/rcd_msg"
               android:layout_margin="8dp"
               android:paddingBottom="10dp"
               android:numStars="5"
               android:rating="0"
               android:layout_centerHorizontal="true"/>

    <RelativeLayout android:layout_height="56dp"
                    android:layout_width="match_parent"
                    android:layout_below="@id/rcd_rating_bar">

        <LinearLayout android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:orientation="horizontal">

            <RelativeLayout android:id="@+id/rcd_image"
                            android:layout_width="0dp"
                            android:layout_height="fill_parent"
                            android:background="@color/selectable_transparent"
                            android:layout_weight="1">

                <TextView android:id="@+id/rcd_image_text"
                          android:layout_height="wrap_content"
                          android:layout_width="wrap_content"
                          android:layout_centerInParent="true"
                          android:paddingLeft="0dp"
                          android:gravity="center"
                          android:text="@string/add_image"
                          android:textColor="@android:color/white"
                          android:textSize="16sp"
                          android:clickable="true"/>

                <ImageView android:id="@+id/rcd_image_img"
                           android:layout_height="32dp"
                           android:layout_width="32dp"
                           android:layout_centerVertical="true"
                           android:layout_margin="8dp"
                           android:layout_toLeftOf="@id/rcd_image_text"
                           android:scaleType="centerInside"
                           android:src="@android:drawable/ic_menu_camera"/>

            </RelativeLayout>

            <RelativeLayout android:id="@+id/rcd_comment"
                            android:layout_width="0dp"
                            android:layout_height="fill_parent"
                            android:background="@color/selectable_transparent"
                            android:layout_weight="1">

                <TextView android:id="@+id/rcd_comment_text"
                          android:layout_height="wrap_content"
                          android:layout_width="wrap_content"
                          android:layout_centerInParent="true"
                          android:paddingRight="6dp" …
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog

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

AlertDialog的自定义主题无法正常工作

我正在尝试为AlertDialog按钮自定义重音颜色.但它似乎没有任何影响它似乎继承了系统的颜色.这是我的风格/主题.

   <color name="actionable_items">#0574ac</color>  <!-- it is blue color --> 
   <style name="LLDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
      <!--buttons color-->
      <item name="colorAccent">@color/actionable_items</item>
      <!--item RadioButton or CheckBox color-->
      <item name="colorControlActivated">@color/actionable_items</item>
      <item name="colorPrimary">@color/actionable_items</item>
      <item name="colorPrimaryDark">@color/actionable_items</item>
      <item name="android:listChoiceIndicatorMultiple">@color/actionable_items</item>
      <item name="android:listChoiceIndicatorSingle">@color/actionable_items</item>
   </style>
Run Code Online (Sandbox Code Playgroud)

这是我的代码,它正在尝试构建Alertdialog.

final CustomPopupBuilder removePlaceDialog =  new CustomPopupBuilder(new ContextThemeWrapper(context,
                                                            R.style.LLDialog));
            removePlaceDialog.setTitle(getString(R.string.delete_place, placeName));
            removePlaceDialog.setMessage(getString(R.string.delete_place_message));
            removePlaceDialog.setPositiveButton(R.string.ok_button, new DialogInterface.OnClickListener() {

               public void onClick(DialogInterface dialog, int which) {
                  ....
                  ....
               }
            });
            removePlaceDialog.setNegativeButton(R.string.cancel, null);
            removePlaceDialog.create().show();
Run Code Online (Sandbox Code Playgroud)

最终的AlertDialog没有具有相同文本颜色的按钮.文字颜色与绿色相似.它似乎是从系统继承颜色而不是自定义主题.这是图像:在此输入图像描述

编辑1:

我试过使用AlertDialog.Builder它,但它给了我相同的结果.

final AlertDialog.Builder removePlaceDialog =  AlertDialog.Builder(new ContextThemeWrapper(context,
                                                             R.style.LLDialog));
                removePlaceDialog.setTitle(getString(R.string.delete_place, placeName));
                removePlaceDialog.setMessage(getString(R.string.delete_place_message));
                removePlaceDialog.setPositiveButton(R.string.ok_button, new …
Run Code Online (Sandbox Code Playgroud)

android android-theme android-alertdialog

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

如何设置AlertDialog自定义标题上边距并删除不需要的填充?

我坚持marginpadding一个标题的问题AlertDialog.Builder,我正在做的是我想要标题,center所以我使用setCustomTitle我能够这样做,但坚持边缘​​和填充它.我不希望显示不需要的填充,我也想设置一些标题的顶部边距,我正在使用,LinearLayout.LayoutParams但它没有任何影响.请建议如何处理它.谢谢

代码:

dialog = new AlertDialog.Builder(context, R.style.DialogTheme);
TextView title = new TextView(context);
title.setTextColor(ContextCompat.getColor(context, R.color.black));
title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
title.setTypeface(Typeface.DEFAULT_BOLD);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, 20, 0, 0);
title.setLayoutParams(lp);
title.setText("Dialog");
title.setGravity(Gravity.CENTER);
dialog.setCustomTitle(title);
dialog.setMessage("Dialog box with custom title view ");
dialog.setCancelable(false);
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {

    }
});
dialog.show();
Run Code Online (Sandbox Code Playgroud)

结果:在此输入图像描述

android android-alertdialog android-dialog

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

触摸在外面时,AlertDialog消失[Android]

我在我的应用程序上使用警报对话框,但当用户触摸它时它会一直隐藏.这是我的代码:

public class DialogMessageEnd extends DialogFragment
{
    String winner;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the Builder class for convenient dialog construction
        Snooker_Scoreboard ss = new Snooker_Scoreboard();
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setCancelable(false);
        builder.setMessage(ss.winnerPlayer + " won the match ("+ss.frame1ToPass+"-"+ss.frame2ToPass+")!")
                .setPositiveButton("New Match!", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        Intent i = new Intent(getContext(),PlayerSelection.class);
                        startActivity(i);
                    }
                });



        // Create the AlertDialog object and return it
        return builder.create();
    }

}
Run Code Online (Sandbox Code Playgroud)

如你所见,我用过

builder.setCancelable(false);
Run Code Online (Sandbox Code Playgroud)

但它仍然无法解决问题.你能帮助我吗?谢谢

java android android-alertdialog

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

在Android中将CardView显示为对话框

我希望显示一个CardVeiw显示用户的一些信息.同时,我需要它的行为类似于一个对话框,同时,我需要让用户点击左下方的按钮,如下图所示,并翻转CardView显示另一个CardView更丰富的内容,如一些详细的描述......这是一个例子:

到目前为止,我知道我可以创建一个Dialog,但我的内容可以滚动.因此,Dialog在这种情况下使用a可能不是一个好习惯(根据https://material.io/guidelines/components/dialogs.html#dialogs-alerts).

在此输入图像描述

所以我想知道这个问题的最佳实践是什么?

android android-alertdialog android-cardview

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