【问题标题】:Android coding concept: AlertDialog as Activity?Android编码概念:AlertDialog as Activity?
【发布时间】:2012-11-28 19:47:02
【问题描述】:

如果我想从我的 MainActivity 启动一个应该是 Activity 本身的 AlertDialog(因为我需要将信息从 AlertDialog 传递回 MainActivity),那么通常的编码概念是什么?我必须在我的 DialogActivity 或 Activity 中扩展 Dialog 吗?我不确定对话框本身是否应该是 Activity 或者 Activity 是否应该以某种方式调用 AlertDialog?你能给我一个提示吗?

我的主要问题是我总共有 3 个 AlertDialogs,最后 2 个取决于第一个 AlertDialog 的选择(因此调用 nr2 或 nr3)。而且我必须将最后一个对话框中的信息传递回 MainActivity,所以我认为唯一干净的方法是使用不同的 Activity 来解决这个问题。

[更新]
解决方案是创建不同的活动,看起来像对话框(请参阅接受的答案)。下一个问题是将一些数据从 Activity A 传递到 B 到 C,然后将结果传回 A。这对于 Intent 来说非常简单。
A: startActivityForResult(...)
B: startActivity(...); addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
C: setResult(...)
A: 从 onActivityResult(...) 获取数据

【问题讨论】:

  • 正常显示一个对话框,然后通过 onClickListener 显示其他对话框有什么问题吗?
  • @Nutomic 是的,因为这会导致意大利面条代码不清晰。第二个对话框更复杂,不仅仅是一个简单的列表。

标签: android coding-style android-activity android-alertdialog


【解决方案1】:

有一个对话框主题可以用来显示一个像对话框一样的活动。

<activity android:theme="@android:style/Theme.Dialog">

结合 startActivityForResult() 和 setResult() 你应该能够创建你想要的。

【讨论】:

    【解决方案2】:

    我相信首选模式是使用dialogfragment

    【讨论】:

    • 也许,但我为 API 级别 7 开发。
    • 在这种情况下使用支持库:developer.android.com/training/basics/fragments/…
    • 好的,谢谢,我会记住的,但现在我已经在交换我的 OP 中描述的丑陋概念,由 WarrenFaith 提议的活动。这似乎工作得很好(目前)。
    猜你喜欢
    • 2017-11-19
    • 2017-07-27
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多