Articles of android dialog

在android 2.3 GingerBread中创建popup菜单

我是android的中级程序员。 现在我正在开发一个有视图的应用程序。 当我点击该视图时,我必须显示一个popup菜单。 我从android开发者网站获得了以下代码 public void showPopup(View v) { PopupMenu popup = new PopupMenu(this, v); MenuInflater inflater = popup.getMenuInflater(); inflater.inflate(R.menu.actions, popup.getMenu()); popup.show(); } 但是此代码仅适用于API 11及更高版本。 任何人都可以帮助我,以便我可以制作一个支持GingerBread的popup菜单吗?

具有自定义视图的AlertDialog不会“resize”

我遇到了AlertDialog和自定义内容/视图的问题。 简单地说,当打开软键盘时,AlertDialog不会自行resize。 以下屏幕截图显示了我的问题以及我想要实现的目标: 当前行为(左)和想要的行为(右) 我知道在SO上有一些类似问题的其他线程。 不幸的是,所提供的解决方案都不适用于我。 按照我的示例代码: XML Java – CustomAlertDialog.class public class CustomAlertDialog extends AlertDialog{ private Context context; public CustomAlertDialog(Context context) { super(context); this.context = context; } public void buildDialog(){ LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.dialog_content, null); builder = new AlertDialog.Builder(context); builder.setTitle(“EditText”); builder.setView(layout); builder.setPositiveButton(“Ok”, new OnClickListener() { @Override public void onClick(DialogInterface arg0, […]

DailogFragment – getArguments / setArguments – 为什么在包中传递参数?

在官方示例http://developer.android.com/reference/android/app/DialogFragment.html#BasicDialog中 ,正在使用静态工厂方法创建片段,该方法在Bundle中包装参数并调用no-args构造函数传递args使用setArguments(bundle) – 所以我的问题是 – 为什么不简单地用这些参数创建公共构造函数? 使用getArguments / setArguments片段的方法的原因是什么 – 可能是Dialog不能保证每次都重新创建,但重用? 如果是的话那么什么时候发生? 提前致谢。

键盘打开后滚动对话框

我有一些EditText字段的对话框。 当我想填写一些EditText键盘打开,我无法填写上面的一些字段。 我应该关闭键盘,然后单击上面的EditText 。 如何在键盘打开时使对话框可滚动以避免关闭键盘?

如何在Android上显示当前可见活动的对话框?

我的问题类似于这个2岁的问题 ,我只是发布相同的问题来获得更新的答案,因为很多事情在两年后发生了变化。 我正在开发一个GingerBread +设备的应用程序,我有很多活动,在后台我从服务器收到一些数据。 现在基于该数据在某些情况下我需要向用户显示一个Dialog 。 问题是我怎么知道当前最活跃的是哪个? 我尝试了什么,我尝试在创建Dialog提供getApplicationContext() ,但这不起作用。 抛出一些例外。 一个办法 ? (我真的讨厌它),解决方案可能是通过在Application类中使用variables并在每个活动的onResume()上设置它来跟踪当前可见的活动。 如果他们有更聪明的方法来实现这一点,我真的不想做这本书,我相信他们是更明智的方法来实现这一目标, 我的简单问题是, 如何在当前可见活动上显示对话框? ,所以我可以提供对AlertDialog.Builder的引用,我认为这将完成我的工作。如果不是我怎么能在最顶层的Activity上显示一个对话框? 编辑,我创建一个简单的对话框使用以下代码私有View.OnClickListener cancelClickListener = new OnClickListener(){ @Override public void onClick(View v) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( LoginActivity.this); // set title alertDialogBuilder.setTitle(“Roobroo will exit..”); // set dialog message alertDialogBuilder .setMessage(“Are you sure you want to exit ?”) .setCancelable(false) .setPositiveButton(“Yes”, […]

如何将ActionBarCompat Activity显示为在AndroidManifest.xml中设置其主题的对话框?

Android Developer文档描述了如何为Activity设置Dialog主题: 提示:如果需要自定义对话框,则可以将“ Activity显示为对话框,而不是使用“ Dialog API”。 只需创建一个活动并将其主题设置为清单元素中的Theme.Holo.Dialog : 而已。 活动现在显示在对话窗口而不是全屏。 我正在尝试为使用ActionBarCompat的应用程序执行此操作。 我一直在尝试不同的主题,比如…… android:theme=”@android:style/Theme.Dialog” android:theme=”@style/Theme.AppCompat.Base.CompactMenu.Dialog” android:theme=”@style/Theme.AppCompat.CompactMenu.Dialog” 但是,由于我最终得到相同的错误消息,它们似乎都没有工作: java.lang.IllegalStateException:您需要在此活动中使用Theme.AppCompat主题(或后代)。

阻止ProgressDialog被onClick解雇

我使用ProgressDialog向用户显示他必须等待并且在用户必须等待时使我的应用程序的表面“不可触及”。 我在progressDialog中添加了一个Button,如果某些条件为真,它应该启动一些操作。 问题是每次用户按下按钮时,progressDialog都会自动被解除。 即使没有触发任何动作。 如何在调用onClick时阻止progressDialog被解雇? 感谢和问候 编辑: connectingDialog = new ProgressDialog(this); connectingDialog.setCancelable(false); connectingDialog.setCanceledOnTouchOutside(false); connectingDialog.setButton(DialogInterface.BUTTON_NEUTRAL, “start”, new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface arg0, int arg1) { /*if(isPrepared) startGame();*/ connectingDialog.show(); // does not work, too } }); connectingDialog.show();

在恢复活动时阻止多次打开对话框

在我的Android应用程序中,为了询问用户他/她是否想要恢复当前游戏,我在主游戏活动中显示一个对话框,说“你想恢复当前游戏吗?是 – 否”。 问题是如果我在没有回答对话的情况下恢复这个活动的次数,那么我会得到几个对话框,这显然不是我的目标。 我可以使用布尔var轻松避免这种行为,但我想知道Dialog类是否有一种防止重复或类似的选项。

在dialogfragment中删除白色背景

以下是我调用DialogFragment的方法: DialogSelectAccount myDiag=new DialogSelectAccount(); myDiag.show(ft,”Diag” ); 这是(部分)我的DialogFragment的创建方式: public class DialogSelectAccount extends DialogFragment { public DialogSelectAccount() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.dialog_select_account, container, false); tvMessage = (TextView) rootView.findViewById(R.id.tvMessage); btnAccountPublic = (Button) rootView.findViewById(R.id.btnAccountPublic); btnAccountEnterprise = (Button) rootView.findViewById(R.id.btnAccountEnterprise); tvMessage.setText(message); […]

如何在DialogFragment中忽略“搜索”键

我之前为Dialog扩展了Dialog类,我不得不在对话框中使用以下代码段,以便在按下手机的搜索键时不会将其解除: setOnKeyListener(new OnKeyListener() { public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_SEARCH) return true; // pretend we’ve processed it else return false; // pass on to be processed as normal } }); 我现在使用DialogFragment类作为我的对话框。 不幸的是, DialogFragment与Dialog有同样的问题,当按下手机的搜索键时,对话框被解除(无论对话框的可取消状态如何)。 双重问题是DialogFragment没有setOnKeyListener方法,因此上面的代码段不再适用。 任何人都知道如何让我的对话框(显示时)忽略搜索键按下? 注意:我尝试将上面的代码段添加到我的activity的onKeyUp方法中,但遗憾的是,如果显示DialogFragment实例,则不会调用我的activity的onKeyUp方法。 相反,令人恼火的是, DialogFragment实例被解雇了。