Questions tagged «android-alertdialog»

Dialog的子类,可以显示一个,两个或三个按钮。如果只想在此对话框中显示String,请使用setMessage()方法。

17
如何防止单击按钮时对话框关闭
我有一个EditText用于输入的对话框。当我单击对话框上的“是”按钮时,它将验证输入,然后关闭对话框。但是,如果输入错误,我希望保留在同一对话框中。每次无论输入什么,当我单击“否”按钮时,都应自动关闭对话框。如何禁用此功能?顺便说一句,我在对话框上的按钮上使用了PositiveButton和NegativeButton。

27
使用getApplication()作为上下文的对话框抛出“无法添加窗口-令牌null不适用于应用程序”
我的活动试图创建一个AlertContext,它需要一个Context作为参数。如果我使用,这可以按预期工作: AlertDialog.Builder builder = new AlertDialog.Builder(this); 但是,我很乐意使用“ this”作为上下文,因为即使在诸如屏幕旋转之类的简单操作中销毁并重新创建Activity时,也可能会发生内存泄漏。摘自Android开发者博客上的相关文章: 有两种简单的方法可以避免上下文相关的内存泄漏。最明显的是避免将上下文转义超出其自身范围。上面的示例显示了静态引用的情况,但是内部类及其对外部类的隐式引用可能同样危险。第二种解决方案是使用Application上下文。只要您的应用程序处于活动状态且不依赖于活动生命周期,此上下文将一直存在。如果计划保留需要上下文的长期对象,请记住该应用程序对象。您可以通过调用Context.getApplicationContext()或Activity.getApplication()轻松获得它。 但是对于AlertDialog()都不是getApplicationContext()或getApplication()不能作为上下文接受的情况,因为它引发了异常: “无法添加窗口-令牌null不适用于应用程序” 每引用:1,2,3,等等。 那么,这是真的应该被视为“错误” Activity.getApplication()吗,因为我们被正式建议使用,但它不能像宣传的那样起作用? 吉姆

17
如何在Android上显示是/否对话框?
是的,我知道这里有AlertDialog.Builder,但是我很震惊地知道在Android中显示对话框有多困难(至少对程序员不友好)。 我曾经是.NET开发人员,但我想知道以下Android是否等效? if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){ // Do something... }



11
如何在Android 5中更改默认对话框按钮的文本颜色
我的应用程序中有很多警报对话框。这是默认布局,但我要在对话框中添加肯定和否定按钮。因此,按钮将获得默认的Android 5文本颜色(绿色)。我试图更改它,但没有成功。知道如何更改文字颜色吗? 我的自定义对话框: public class MyCustomDialog extends AlertDialog.Builder { public MyCustomDialog(Context context,String title,String message) { super(context); LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); View viewDialog = inflater.inflate(R.layout.dialog_simple, null, false); TextView titleTextView = (TextView)viewDialog.findViewById(R.id.title); titleTextView.setText(title); TextView messageTextView = (TextView)viewDialog.findViewById(R.id.message); messageTextView.setText(message); this.setCancelable(false); this.setView(viewDialog); } } 创建对话框: MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try …


10
扩大供AlertDialog使用的视图时,“避免将null作为视图根传递”警告
Avoid passing null as the view root当使用nullas 扩大视图时,我会收到棉绒警告parent,例如: LayoutInflater.from(context).inflate(R.layout.dialog_edit, null); 但是,该视图将用作on 的内容AlertDialog,使用setViewon AlertDialog.Builder,所以我不知道应将什么作为the传递parent。 您认为parent在这种情况下应该怎么办?


8
buider.show()上的“ android.view.WindowManager $ BadTokenException:无法添加窗口”
从我的主 activity,我需要调用一个内部类,并在该类中的一个方法中,我需要显示AlertDialog。将其关闭后,按“确定”按钮时,请转到Google Play购买。 在大多数情况下,一切运行正常,但对于少数用户而言,它崩溃了 builder.show(),我可以"android.view.WindowManager$BadTokenException:从崩溃日志中看到“ 无法添加窗口”。请提出建议。 我的代码非常像这样: public class classname1 extends Activity{ public void onCreate(Bundle savedInstanceState) { this.requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.<view>); //call the <className1> class to execute } private class classNamename2 extends AsyncTask<String, Void, String>{ protected String doInBackground(String... params) {} protected void onPostExecute(String result){ if(page.contains("error")) { AlertDialog.Builder builder = new AlertDialog.Builder(classname1.this); …


11
如何实现自定义AlertDialog视图
在AlertDialog上的Android文档中,它提供了以下说明和示例,用于在AlertDialog中设置自定义视图: 如果要显示更复杂的视图,请查找称为“ body”的FrameLayout并将视图添加到其中: FrameLayout fl = (FrameLayout) findViewById(R.id.body); fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT)); 首先,很明显这add()是一个错字,并且本来就是addView()。 我对使用R.id.body的第一行感到困惑。看来这是AlertDialog的主体元素,但我不能只在代码b / c中输入它,它会产生编译错误。R.id.body在哪里定义或分配的? 这是我的代码。我试图setView(findViewById(R.layout.whatever)在生成器上使用,但是没有用。我以为是因为我没有手动充气? AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Title") .setCancelable(false) .setPositiveButton("Go", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { EditText textBox = (EditText) findViewById(R.id.textbox); doStuff(); } }); FrameLayout f1 = (FrameLayout)findViewById(R.id.body /*CURRENTLY an …

8
MaterialComponents主题警报对话框按钮
最近,我从支持库切换到com.google.android.material:material:1.0.0 但是现在我有一个问题,在此页面中有一条注释https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md 注意:使用“材料组件”主题可以启用自定义视图充气器,该充气器将默认组件替换为其“材料”对应的组件。当前,这仅用MaterialButton替换Button XML组件。 我正在使用的主题 Theme.MaterialComponents.Light.NoActionBar 完全按照该注释中的说明进行操作,它将AlertDialog Buttons替换为MaterialButtons,但是问题是默认情况下MaterialButtons是彩色背景,现在这些按钮如下所示: 如何使它们再次变得无边界和无背景? PS我正在使用警报生成器来创建警报对话框: android.app.AlertDialog.Builder

8
AlertDialog的setCancelable(false)方法不起作用
我创建了一个AlertDialog,它工作正常。如果我按以下 按钮,它就会消失:1)使用键盘的逃逸键盘按钮或 2)后退按钮 为了使其即使在上述条件下也能保持聚焦,我在构建时添加了'.setCancelable(false)'语句。但是,我仍然看到对话框消失。问题出在哪儿?请帮忙。 添加的代码: return new AlertDialog.Builder(getActivity()) .setIcon(R.drawable.alert_dialog_icon) .setTitle(title) .setCancelable(false) .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { ((FragmentAlertDialog)getActivity()).doPositiveClick(); } } ) .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { ((FragmentAlertDialog)getActivity()).doNegativeClick(); } } ) .create(); 信封:XP Professional上为Android 4.0。

8
android活动已泄漏窗口com.android.internal.policy.impl.phonewindow $ decorview问题
我正在使用Android应用程序来显示网络错误。 NetErrorPage.java package exp.app; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class NetErrorPage extends Activity implements OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.neterrorlayout); Button reload=(Button)findViewById(R.id.btnReload); reload.setOnClickListener(this); showInfoMessageDialog("Please check your …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.