2012-06-18 50 views
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(); 
+3

添加你的异常的完整堆栈跟踪 – Houcine

+2

你必须在这里添加更多相关的代码,这还不够说什么。 – Sajmon

+0

是的,对不起,请参阅修改。在logcat上没有例外,应用程序刚刚关闭而没有错误 – Jaume

回答

5

你有没有在堆栈中的调用完成的时间在程序的任何其他活动()?如果你不这样做,你会想开始所需的活动,而不是完成当前的活动。

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

从你说的话来看,好像你有选项卡式的用户界面,并且你试图在其中一个选项卡中显示一个webview,然后隐藏它。

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

二 - ,这是很重要的 - 看起来像你想实现选项卡方式 - TabWidget,TabHost等。由于蜂窝已被释放,还有很多更方便的方法来实现分页UI - Action Bar Tabs and Fragments - 该方法更方便,并且会导致您的webview问题过时:有一个名为WebViewFragment的事物,它基本上是WebView,但更智能 - 它将以最小的努力处理自己的生命周期(即,暂停时,暂停时,恢复时添加)。研究碎片需要一些努力,但它非常值得。您可以将Honeycomb android sdks之前的Fragments API作为静态库 - 它被称为android-support-v4,您可以在Android SDK Manager中下载它。

+0

WebViewFragment是实现它的起点!我非常感谢你的帮助 – Jaume

+0

不客气,很高兴我能提供帮助。 –

2

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

此外,如果您只想在不存在旧活动的情况下开始此新活动,那么您可以将android:nohistory =“true”添加到您的manifest.xml。这将导致当前活动成为队列中唯一的活动。 请参阅HERE

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

我希望这会有所帮助。

+0

这两种方法都不能完全正常工作,但是作为出发点的良好链接...... +1 – Jaume

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(); 
     } 
0

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