在另一个屏幕中激活对话框

时间:2011-11-14 21:31:12

标签: android dialog

我想询问有关我正在制作的应用的建议......

在我的应用程序中,如果用户按下屏幕1中的特定按钮,则屏幕2上将出现一个对话框,打开屏幕2。否则,如果未单击屏幕1上的按钮,则屏幕2上的对话框将不会显示。

我不是要求你们发布大量的代码来获得答案,但我只是要求我应该遵循的步骤/算法以实现我的目标......提前感谢!

5 个答案:

答案 0 :(得分:1)

您应该做的是使用第一个活动(an activity represents a screen)中的意图传递boolean,然后将其加载到第二个活动中。在那里,您可以阅读该值并显示或不显示对话框。

使用意图将数据从一个Activity传递到另一个Activity的更多信息

答案 1 :(得分:1)

创建Intent以启动activity2时,使用

在其上设置一个额外参数
boolean showDialog=...
intent.putExtra("yourextraname", showDialog );

然后在activity2中你可以使用它:

boolean showDialog=getIntent().getBooleanExtra("yourextraname", false);

答案 2 :(得分:1)

屏幕2必须知道是否必须显示对话框。

因此,屏幕1必须向屏幕2发送一些数据(可能是“显示对话框”的消息,或者可能是该对话框的内容)。

如果屏幕2接收数据,则显示对话框。否则,什么都不做。

在Android中:

  • 如果按下该按钮,请将数据保存在Activity1中。
  • 如果要显示screen2,请使用Intent发送startActivity()。如果保存了数据,请在启动之前将它们放入Intent(请参阅Intent.putExtra() doc
  • 在Activity2的onCreate中,获取getIntent()的意图并检查其是否包含数据(请参阅Intent.hasExtra() doc
  • 如果为true,则显示您的AlertDialog

答案 3 :(得分:0)

不是使用Intent Extras在两个活动之间传递数据,而是将其存储在负责管理应用程序中所有数据的Model类中(Ala MVC设计模式):

// screen 1 button click
...
@Override 
void OnClick(View v)
{
    Model.setScreen1Clicked(true);
}

...

// screen 2 loads
...
void onCreate(Bundle savedInstanceState)
{
    if( Model.screen1Clicked() )
    {
        showDialog();
    }
}

答案 4 :(得分:0)

我认为最安全,最简单的解决方案是使用SharedPreferences

设置标记

代码示例(您应该根据文档进行检查):

// screen one
sharedPreferences.edit().putBoolean("showWindow", true).commit();

// screen two
if(sharedPreferences.getBoolean("showWindow", false)) {
    sharedPreferences.edit().putBoolean("showWindow", false).commit();
    // show Dialog
}