Android 对话框:我应该使用 DialogFragment 还是单独的 Activity 来处理简单的输入框

Posted

技术标签:

【中文标题】Android 对话框:我应该使用 DialogFragment 还是单独的 Activity 来处理简单的输入框【英文标题】:Android dialogs: Should I use a DialogFragment or a separate activity to handle a simple input box 【发布时间】:2016-07-30 12:31:46 【问题描述】:

我正在开发一个简单的 android 益智游戏。开始时,通过使用 PRNG 生成随机初始游戏状态来确定游戏状态。但是,我想实现一个种子系统,用户可以在其中输入一个字母数字字符串,然后它将充当生成游戏初始状态的 PNRG 的种子。然后,用户可以与他们的朋友分享种子,在他们之间玩同一个棋盘。

为了做到这一点,我需要显示游戏的 Activity 显示一个包含 EditText 和 OK 按钮的对话框,以便用户可以输入种子。然后对话框应将输入的字符串发送到游戏活动,以便它可以使用它来生成棋盘。根据我的阅读,我似乎可以使用带有对话框主题的 Activity 或 DialogFragment。

虽然我可以创建一个以对话框为主题的活动,但为了这个简单的目的而单独创建一个活动似乎有点过头了,而且我找不到从 DialogFragment 向游戏活动返回字符串的方法。

哪种方式效果更好,单独的活动或 DialogFragment。如果是 DialogFragment,将 String 返回到游戏 Activity 的最佳方式是什么?

提前感谢您的帮助。

【问题讨论】:

在对话框中,您可以在变量的编辑文本中输入字符串并将该变量设为公共静态,以便轻松访问 【参考方案1】:

你可以试试这个简单的安卓对话框popup library。在您的活动中使用它非常简单。

Pop.on(this)
                .with()
                .title(R.string.title)// you can skip if not needed
                .layout(R.layout.custom_pop)// your custom layout 
                .when(new Pop.Yah()  // positive button
                    @Override
                    public void clicked(DialogInterface dialog, View view) 
                        Toast.makeText(getBaseContext(), "Yah button clicked", Toast.LENGTH_LONG).show();
                    
                )
                .when(new Pop.Nah()  // negative button, you can skip if not neeed
                    @Override
                    public void clicked(DialogInterface dialog, View view) 
                        Toast.makeText(getBaseContext(), "Nah button clicked", Toast.LENGTH_LONG).show();
                    
                ).show();

【讨论】:

以上是关于Android 对话框:我应该使用 DialogFragment 还是单独的 Activity 来处理简单的输入框的主要内容,如果未能解决你的问题,请参考以下文章

Android 各种进程

Android 融合位置更新

如何在android中的接口回调内部传输数据

使用对话框禁用 GPS (Android)

在 Android 上获取首选/默认应用

哪个应用正在使用 Android Gps 引擎