2012-06-18 51 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將被調用您的父級活動。