2

所以我有一个服务,它启动一个显示为弹出窗口的活动,感谢“android:style/Theme.Dialog”

此活动显示一个列表视图,其中包含应用程序列表。在列表视图的每个元素上,都有应用程序的简短描述和两个按钮。1 用于启动应用程序 2 用于显示带有更多信息的 toast。

这是我的服务中的代码:它启动了活动

Intent intent = new Intent(this, PopUpActivity.class);
intent.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);  

此活动使用自定义布局,带有列表视图,使用自定义 ArrayAdapter

在这个适配器中,我在开始按钮上设置了一个动作以启动当前应用程序

Button lanceur = (Button) v.findViewById(R.id.Buttonlancer);
            lanceur.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    p.start(mcontext);
                }
            });

使用 p.start,我启动应用程序。

但是现在,如果我从应用程序中按“返回”,我会回到弹出窗口……我可以启动另一个应用程序。我不希望它成为可能。

这就是为什么我希望我可以解除/销毁/完成我的 PopupActivity,但我无法用我拥有的代码来做到这一点。

4

3 回答 3

3

这可以通过startActivityForResult()和 来完成onActivityResult()

 Intent intent = new Intent(this, PopUpActivity.class);
 intent.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION);
 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 getApplicationContext().startActivityForResult(intent,1); 

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     Log.d("CheckStartActivity","onActivityResult and resultCode = "+resultCode);
     // TODO Auto-generated method stub
     super.onActivityResult(requestCode, resultCode, data);
     this.finish();
 }

并添加 AndroidManifest.xml:

<activity android:name=".PopUpActivity" android:noHistory="true" />

于 2012-06-29T15:17:24.123 回答
0

在调用next之后,只需finish()Activity显示为弹出窗口的内部调用。startActivity

于 2012-06-29T15:08:09.110 回答
0

像这样更改您的 luanch 代码:

Button lanceur = (Button) v.findViewById(R.id.Buttonlancer);
lanceur.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
        p.start(mcontext);
        finish();
    }
});

此外,您可能不需要在服务中调用 getApplicationContext() 可以粘贴更多代码吗?您应该能够使用NameOfYourService.this.startActivity();,甚至可能仅startActivity();取决于您的结构。

另请注意,根据Developer Docs,直接从服务启动 Activity 是一个非常糟糕的主意。看到这个问题的原因:为什么服务不应该启动活动?

于 2012-06-29T15:12:38.537 回答