多个对话框同时出现

时间:2011-01-24 13:33:53

标签: android dialog popup

在我的活动顶部有一个带有一些按钮的对话框。当用户按下按钮时,发生网络请求,并且应该显示进度对话框。所以一次必须至少有两个对话框,这是不可能的(我猜)。 我在这里看到了两种可能的解决方案:

  • 按下按钮时,隐藏主对话框并显示进度对话框
  • 将弹出的所有内容包装在一个对话框中并手动管理

还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

我想这取决于网络请求完成后发生的事情。

从“干净”的角度来看,我建议#1并尽可能保持所有“行动”。这导致可以采取的每个动作的代码段更小。

根据您的需求(在网络请求之后,仍然在对话框内),#2也可能是您的选择。这还需要做更多的工作。在这种情况下,只需在对话框中放入一些(View.INVISIBLE)进度条,并在您的网络请求(希望在AsyncTask中)运行时按需显示/隐藏。同时setEnabled(false)你的按钮。通过用户请求(后退按钮)处理对话框取消。

答案 1 :(得分:0)

是的,还有另一个选项 - 动态(运行时)将ProgressBar添加到对话框中,然后在ProgressBar完成后立即删除它。

<TableLayout
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:stretchColumns="*">
<TableRow>
    <TextView
        android:text="@string/myText"
        />
</TableRow>
<TableRow android:id="@+id/progressBarHere"/>
<TableRow>
    <Button
        android:id="@+id/ok"
        android:text="@string/ok"
        android:layout_width="0dp"
        android:layout_weight="1"
            />
    <Button
        android:id="@+id/cancel"
        android:text="@string/cancel"
        android:layout_width="0dp"
        android:layout_weight="1"
            />
</TableRow>
</TableLayout>

然后在代码smth中:

final TableRow tr = (TableRow) findViewById(R.id.progressBarHere);
ProgressBar pb=new ProgressBar(activity);
//...
tr.addView(pb);