android完成当前活动导致应用关闭

时间:2012-06-18 17:01:10

标签: java android eclipse

我正在执行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 个答案:

答案 0 :(得分:5)

在您致电完成()时,您的应用程序中是否还有其他任何活动?如果不这样做,您将需要启动所需的活动,而不是完成当前活动。

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

根据您的说法,您似乎已选择了用户界面,并且您尝试在其中一个标签中显示网页视图,然后隐藏它。

首先,我不明白为什么要在单独的活动中使用webview。在我看来,你可以在其中一个标签的布局中使用它,只需调用setVisibility(GONE)来隐藏它。

第二 - ,这很重要 - 看起来你正试图以的方式实现标签 - TabWidget,TabHost等等。自从Honeycomb发布以来,就有了实现选项卡式UI的更方便的方法 - Action Bar Tabs and Fragments - 这种方法更加方便,并且会使您的webview问题过时:有一个名为WebViewFragment的东西,它基本上是一个WebView但更聪明 - 它将处理它您需要最少的工作量来拥有自己的生命周期(即删除后暂停,添加时恢复)。研究片段需要花费一些精力,但这非常值得。您可以将用于pre-Honeycomb android sdks的Fragments API作为静态库 - 它叫做android-support-v4,你可以在Android SDK Manager中下载它。

答案 1 :(得分:2)

你打电话给“maswebview.this.finish();”在新活动开始之前?

此外,如果你想在没有旧活动的情况下启动这个新活动,那么你可以在你的manifest.xml中添加android:nohistory =“true”。这将导致当前活动成为队列中的唯一活动。 见HERE

您需要为我们提供更多信息,以便更好地了解具体情况。

我希望这会有所帮助。

答案 2 :(得分: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();
        }

答案 3 :(得分:0)

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