关闭显示为Popup的android活动

时间:2012-06-29 15:05:56

标签: android popup android-listview android-activity

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

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

以下是我服务中的代码:它启动活动

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

此活动使用带有listview的自定义布局,并使用自定义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,但我无法用我的代码来完成它。

3 个答案:

答案 0 :(得分: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" />

答案 1 :(得分:0)

在为下一个finish()致电Activity后,只需在显示为弹出窗口的start内拨打Activity

答案 2 :(得分: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根据 非常糟糕的主意 ,您可以直接从服务启动活动。请参阅此问题,原因如下:Why service should not start activity?