Articles of 对话框

Android 4.1.2对话框被调用两次

当我打电话给我显示一个对话框时,我的应用程序出现了这个问题,不知何故,它被调用了两次。 这只发生在Android 4.1及以上版本中。 较低版本工作正常,所以我不认为这是任何代码问题。 你听说过吗?之前遇到过这个问题? 这里的代码: Button edit = (Button) ad.findViewById(R.id.editBtn); edit.setTypeface(roboto); edit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { setDate(); ad.dismiss(); } }); ad.show(); ad.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { shiftsActivity.setPressed(true); } }); } public void setDate() { // Initialize and open the set date dialog DatePickerDialog setDateDialog = new […]

活动已泄露窗口/对话框(再次!)

是的,我已经阅读了关于同样问题的无数问题。 我的代码很简单:我只是在onCreate上使用showDialog(int id) ,然后我旋转设备。 代码就是那个(测试用例) ,这足以导致问题。 我的理解是showDialog的方法会处理这个……对话框会消失,然后在更改后稍后调用onCreate并再次显示对话框。 但不是。 这个推理有什么问题? 我(我想)了解原因 ,但我不知道如何解决这个问题。 即使是iosched应​​用程序也会在EULA窗口的实现方面遇到同样的问题(在eula对话框中更改方向并导致泄漏)。 我已经阅读了关于关闭onPause的对话框的内容,但是1)当它没有显示时,我冒险解雇,2)跟踪对话似乎太多了。 必须有一个更强大的方法。 那么……处理这个问题需要哪些更干净的代码呢? 谢谢。 日志错误输出: 01-30 00:27:18.615: E/WindowManager(20316): Activity com.test.PreSetupActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@418e0c28 that was originally added here 01-30 00:27:18.615: E/WindowManager(20316): android.view.WindowLeaked: Activity com.test.PreSetupActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@418e0c28 that was originally added here 01-30 00:27:18.615: E/WindowManager(20316): at android.view.ViewRootImpl.(ViewRootImpl.java:343) 01-30 00:27:18.615: E/WindowManager(20316): at […]

android对话活动位置

我使用android:theme =“@ android:style / Theme.Dialog”创建了一个非最大化的活动,使它看起来像一个对话框。 我需要在屏幕上更改活动的位置,但我没有find如何做到这一点……

在java Android中为自定义Dialog创建一个通用类

我的应用程序显示了许多自定义对话框,如是/否或接受/取消决定,当我编码时,我意识到有相当多的代码重复,遵循相同的架构。 我想构建一个通用类,但我不知道该怎么做,或者更确切地说,我必须要做的正确方法(接口,抽象类,inheritance,静态类……) 这是我目前的课程: public class DialogTwoOptions extends Dialog { TextView title_tv; // Button yes_btn, no_btn; public DialogTwoOptions(Context context) { super(context); setContentView(R.layout.dialogo_sino); // a simple layout with a TextView and Two Buttons title_tv = (TextView) findViewById(R.id.dialogo_titulo_sino); // yes_btn = (Button) findViewById(R.id.dialogo_aceptar); // no_btn = (Button) findViewById(R.id.dialogo_cancelar); View v = getWindow().getDecorView(); v.setBackgroundResource(android.R.color.transparent); } public void quitDialog(View v) […]

对话问题:在添加内容之前必须调用requestFeature()

我正在创建一个包含EditText的自定义对话框,以便我可以从用户那里获取文本数据: final EditText newKey = (EditText) findViewById(R.id.dialog_result); AlertDialog.Builder keyBuilder = new AlertDialog.Builder(StegDroid.this); keyBuilder .setCancelable(false) .setPositiveButton(“Try Again”, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Log.v(“Dialog”,”New Key: “+newKey.getText().toString()); } }) .setNegativeButton(“Cancel”, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog dialog = keyBuilder.create(); dialog.setTitle(“Decryption Failed”); dialog.setContentView(R.layout.decrypt_failed_dialog); dialog.show(); 但是我总是得到这个例外: 01-11 […]

在Android中创建自定义对话框

我正在尝试在Android中创建自定义对话框。 但无论我试图做什么,我都无法改变对话框的宽度。 它只是保持不变。 以下是我将设置为对话框内容的视图。 正如您所看到的,我在这个代码示例中使用wrap_content。 我也尝试了以下选项 1)在创建对话框时设置自定义样式。 dialog = new Dialog(this,R.style.Theme_Dialog); 风格如下 wrap_content wrap_content true @null @android:style/Animation.Dialog stateUnspecified|adjustPan 2)像这样在onCreateDialog()中设置视图的参数 LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = inflater.inflate(R.layout.player_info, null, false); ViewGroup.LayoutParams p = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); dialog.setContentView(v,p); 3)我还尝试在onCreateDialog()方法中设置这样的Window参数 WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); params.width=WindowManager.LayoutParams.WRAP_CONTENT; dialog.getWindow().setAttributes(params); 但再次没有运气。 有人可以帮我解决这个问题。 难道我做错了什么?? 你也可以建议我如何设置对话窗口的x和y位置? 谢谢

Android自定义PopupWindow / Dialog

我正在尝试获得一个完全自定义的Dialog或PopupWindow,没有任何默认的Android UI控件(标题,背景,按钮等等)。 这有可能吗? 我花了几个小时寻找这个,但没有运气……看起来这应该很容易,但我找不到它。 最好是通过从XML中扩展View,但此时任何可行的东西都会很好。 谢谢。

BottomSheetDialog / BottomSheetDialogFragment – 使用哪些以及如何使用?

我正在开发一个Material Design应用程序。 我想实现的一个function是某种民意调查。 当用户单击列表的元素时,应显示如下所示的持久性底部工作表对话框。 然后,当用户单击任何按钮时,此对话框应该消失并且模式底部对话框应该显示,为用户提供有关在开头单击的列表项的更多信息。 看起来像这样 。 我找不到有关BottomSheetDialog和BottomSheetDialogFragment的任何明确解释,以及如何正确使用它们,即使在阅读了有关AppCompat对话框的一些信息之后。 所以,我的问题是: 它们以什么方式不同,我应该为每个案例使用哪一个? 如何获取关于在对话框中按下哪个按钮的活动中的数据? 有关使用它们的实现代码或教程的任何链接?

保持活动始终在堆栈之上,或在流氓应用程序启动活动时保持焦点?

我有一个全屏沉浸式活动,必须保持全屏直到用户明确退出。 (例如,想想像全屏观看Youtubevideo一样)。 但是,我最近注意到很多不必要的活动启动可能会破坏我的应用程序的行为。 例如,许多阴暗的“免费应用”倾向于生成全屏透明活动和展示广告,立即扰乱用户。 来自某些实际全屏活动的应用程序的“全屏”通知popup窗口也会立即破坏我的活动。 有没有办法避免这些活动窃取焦点,或者一种方法让它们落后于我的全屏活动,这样它就不会破坏我的全屏模式? 换句话说,每当一些流氓应用程序决定发起我的活动时,如何让我的活动始终保持最佳状态? 它们不需要被取消,而是“暂时搁置”直到用户退出全屏活动。 想到的一种方法是在失去焦点的那一刻用FLAG_ACTIVITY_REORDER_TO_FRONT重新启动我的活动,但这对用户来说看起来不太好:( 注意:如果您想自己尝试一下,我发现了一个“模拟”这些流氓活动的应用程序。 下载此内容 – https://play.google.com/store/apps/details?id=com.nlucas.popupnotificationslite&hl=en 每当您收到通知时,它都会启动全屏透明活动。 尝试观看Youtubevideo并从某人那里收到10条通知,并想象它会分散注意力。 更新:这样做似乎不起作用: @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (!hasFocus) { Intent i = new Intent(getBaseContext(), MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); startActivity(i); }

方向更改时的DialogFragment回调

我正在迁移我的对话框,目前正在使用Activity.showDialog(DIALOG_ID); ,使用android参考中讨论的DialogFragment系统。 在使用回调将某些事件传递回打开对话框的活动/片段时,我的开发过程中出现了一个问题: 这是一个简单对话框的示例代码: public class DialogTest extends DialogFragment { public interface DialogTestListener { public void onDialogPositiveClick(DialogFragment dialog); } // Use this instance of the interface to deliver action events static DialogTestListener mListener; public static DialogTest newInstance(Activity activity, int titleId, int messageId) { udateListener(activity); DialogTest frag = new DialogTest(); Bundle args = new Bundle(); args.putInt(“titleId”, […]