9

我正在执行 maswebview 类,我只想完成这个活动。我尝试过maswebview.this.finish(),但执行时,应用程序已关闭。然后,如果我为选项卡内容设置了一个新视图,它会正确加载并且 webviewmas 会消失但只是一段时间,然后再次出现适合全屏显示。如何完全完成maswebview?谢谢你

public void onClick(View arg0) 
            {
                /*
                Intent intent = getIntent();
                intent.addFlags(Intent.FLAG_ACTIVITY_TASK_ON_HOME);
                startActivityForResult(intent, 1);
                Intent intentmas = new Intent (maswebview.this, mas.class);
                intentmas.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
                intentmas.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
                intentmas.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
                intentmas.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                View vista = getLocalActivityManager().startActivity("maswb", intentmas).getDecorView();
                setContentView(vista);  */

                maswebview.this.finish();
4

4 回答 4

5

在您调用 finish() 时,您的应用程序的堆栈中是否还有其他活动?如果不这样做,您将想要开始所需的活动,而不是完成当前活动。

但实际上在我看来,您正在尝试完成一些可以更简单的事情。您能否提供有关手头任务的更多信息以及您尝试使用的应用程序结构?

从您所说的来看,您似乎有选项卡式 UI,并且您正试图在其中一个选项卡中显示 web 视图,然后将其隐藏。

首先,我不明白您为什么要将 webview 放在单独的活动中。在我看来,您可以将它放在其中一个选项卡的布局中,然后调用 setVisibility(GONE) 来隐藏它。

第二 -这很重要- 看起来你正在尝试以方式实现选项卡 - TabWidget、TabHost 等。由于 Honeycomb 已发布,因此有更方便的方式来实现选项卡式 UI -操作栏选项卡和片段- 这种方法更方便,并且会让你的 webview 问题过时:有一个东西叫做WebViewFragment这基本上是一个 WebView,但更智能 - 它会以最少的努力处理自己的生命周期(即删除时暂停,添加时恢复)。研究 Fragments 需要付出一些努力,但这是非常值得的。您可以获得用于 pre-Honeycomb android sdks 的 Fragments API 作为静态库 - 它称为 android-support-v4,您可以在 Android SDK Manager 中下载它。

于 2012-06-21T09:22:52.277 回答
2

你在叫“maswebview.this.finish();”吗?在新活动开始之前?

此外,如果您想在不存在旧 Activity 的情况下启动这个新 Activity,那么您可以将 android:nohistory="true" 添加到 manifest.xml。这将导致当前活动成为队列中的唯一活动。看这里

您需要为我们提供更多信息,以便更好地了解到底发生了什么。

我希望这有帮助。

于 2012-06-20T18:52:57.510 回答
0

试试下面的代码

@Override
        public void onBackPressed() {
        if(childView != null && parentLayout.getChildCount()==2){
            childView.stopLoading();
            parentLayout.removeViewAt(parentLayout.getChildCount()-1);
            if(webView.getVisibility() == View.GONE)
                webView.setVisibility(View.VISIBLE);
        }else{          
            super.onBackPressed();
        }
于 2012-06-21T08:45:02.307 回答
0

您是否有启动此活动的父活动?如果是,请确保在启动 maswebview 后不调用 finish(),这样父活动将保留在堆栈中。一旦 maswebview 退出,就会为您的父活动调用 onResume。

于 2012-06-22T11:43:27.640 回答