服务广播到Activity,以对话框的形式启动新的Activity - 如何返回第一个Activity?

时间:2012-11-29 21:06:28

标签: android android-activity android-dialog

我有一个以StartupActivity开头的应用。

StartupActivity启动服务,如下所示:

startService(new Intent(StartupActivity.this, SamcomService.class));

在某些时候,服务决定广播一个StartupActivity对其作出反应的Intent。活动在收到INtent时会这样做:

Intent intent2 = new Intent(StartupActivity.this, DialogActivity.class); 
intent2.putExtra("Centrals", list); // list is defined elsewhere
startActivity(intent2);

正如您所看到的,启动了一个新的Activity,并且该Activity恰好将Theme.Dialog作为主题。对话框显示一个列表,用户应在其中选择一些内容。此时,应将它们返回到第一个Activity,即StartupActivity。 如果按BACK,它们也应该返回到第一个Activity。

以下是DialogActivity的onCreate代码:

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    final ArrayList<tWorks.Samcom.SICJsonProtocol.Objects.Central> list = (ArrayList<tWorks.Samcom.SICJsonProtocol.Objects.Central>)this.getIntent().getSerializableExtra("Centrals");

    // Some more stuff not necessary for this question...
    // ....
    // ....

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Choose");
    builder.setItems(items2, new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) 
        {
                        // Do some stuff depending on choice
            finish();
        }
    });
    builder.create().show();
}

问题在于整个应用程序,即所有活动等都会消失,我将返回主屏幕。

如果我没有调用“finish()”,那么我在StartupActivity上面会留下一个“叠加层”,并且不能再做任何事了。如果我按BACK,我将返回主屏幕。

那么,当从列表中选择内容或按回来时,如何让DialogActivity消失/消失呢?

1 个答案:

答案 0 :(得分:2)

它应该打开你的启动屏幕。检查你的清单。如果有任何android.nohistry = true,则在清单检查启动活动中。只需删除它。