【问题标题】:Keep dialog/activity always on the top保持对话框/活动始终在顶部
【发布时间】:2013-04-04 13:32:08
【问题描述】:

如何保持一个对话框/活动在其他活动之上,无论用户是否在活动之间切换,它都应该一直处于活动状态。

【问题讨论】:

  • 在每个活动的 onResume() 中显示一个对话框,在 onPause() 中将其关闭
  • @Raghunandan 好吧,我认为这不是一个好方法
  • 你怎么觉得这不是一个好方法?
  • @Raghunandan 这将导致每次用户切换活动时都会重新创建对话框,它不会始终保持在最前面。

标签: android android-activity dialog android-widget


【解决方案1】:

您可以使用相对布局作为父级,通过使用相对布局,您可以重叠其他布局。因此,您必须使用相对布局的两个子布局。在一个孩子中,您将弹出窗口,而在另一种布局中,您必须不断更改布局..

如果您希望跨多个活动进行此操作。您必须创建一个单独的布局并将其包含在所有活动中,并创建一个界面来处理弹出窗口中的按钮事件。

您可以创建一个具有上述布局的基础活动,并将该活动扩展到您想要此布局的所有其他活动中。

问候, 尤维

【讨论】:

    【解决方案2】:

    就个人而言,我会做这样的事情:

    1) 创建一个继承自 DialogFragment 的类:

        public class MyDialogFragment extends DialogFragment{
            public static final int DIALOG_TYPE1 = 1;
    
            public static MyDialogFragment newInstance(int dialogType) {
                    MainDialogFragment frag = new MainDialogFragment();
                    Bundle args = new Bundle();
                    args.putInt("type", dialogType);
                    frag.setArguments(args);
                    return frag;
                }
    
            @Override
            public Dialog onCreateDialog(Bundle savedInstanceState) {
                    super.onCreateDialog(savedInstanceState);
                    int type = getArguments().getInt("type");
                    Dialog result = null;
                    switch (type) {
                    case DIALOG_TYPE1:
                                  result = new AlertDialog.Builder(getActivity())
                                     .setTitle("TITLE")
                                     .setMessage("MESSAGE")
                                     .setPositiveButton(android.R.string.ok, null)
                                     .create();
                                  break;
                            default:
                                  break;
                    }
                    return result;
             }
    }
    

    2) 然后在你的活动中:

    DialogFragment dialog = MyDialogFragment.newInstance(MyDialogFragment.DIALOG_TYPE1);
    dialog.show(getFragmentManager(), "DIALOG");
    

    3) 你将对话框的类型放入一个包中,以便下一个活动可以获取并再次显示它。

    【讨论】:

      猜你喜欢
      • 2021-12-09
      • 2015-02-08
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多