2011-09-21 46 views
1

我有3個活動 - A,B和C.我有一個活動A的列表,如果點擊它,它會進入活動B.在活動B上,我有與下面的代碼打開活性C(網頁瀏覽器)按鈕:WebView的問題...回到之前的活動

buyButton = (Button) findViewById(R.id.buyButton); 

    buyButton.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      System.out.println("!!! buy !!!"); 

     /*Uri uri = Uri.parse("http://www.google.com"); 
     Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
     startActivity(intent);*/ 

      Intent startActivity = new Intent(getApplicationContext(), WebViewer.class); 
      startActivity.putExtra("link","http://www.google.com"); 
      startActivityForResult(startActivity, 15); 

     } 
    }); 

現在,當我按下網頁瀏覽器活動C中的後退按鈕,活動B還關閉。我不確定爲什麼會這樣。任何提示?謝謝。

Web查看代碼:

public class WebViewer extends Activity { 



ImageButton backButton; 


@Override 
public void onCreate(Bundle savedInstanceState) { 


    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
    setContentView(R.layout.streams); 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title3); 

    String url = ""; 
    Bundle extras = getIntent().getExtras(); 
    if(extras !=null) { 
     url = extras.getString("link"); 
    } 

    if (!url.startsWith("http://") && !url.startsWith("https://")) 
      url = "http://" + url; 

    final TextView title=(TextView) findViewById(R.id.title_text_view_success3); 
    //title.setText("Saved Streams"); 

    backButton = (ImageButton) findViewById(R.id.back_button3); 

    backButton.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      System.out.println("!!! BACK !!!"); 
      //finishActivity(0); 
      onBackPressed(); 
     } 
    }); 

    setContentView(R.layout.viewer); 
    final WebView webView = (WebView) findViewById(R.id.webview); 
    webView.getSettings().setJavaScriptEnabled(true); 

    webView.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) 
     { 
      title.setText("Loading..."); 
      WebViewer.this.setProgress(progress * 100); 

      if(progress == 100) 
      title.setText(webView.getTitle()); 
     } 
    }); 

    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) 
     { 
      // Handle the error 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) 
     { 
      view.loadUrl(url); 
      return true; 
     } 
    }); 

    webView.loadUrl(url); 


} 



} 
+0

我認爲問題在於你正在使用startActivityForResult()這導致Activity B關閉。 –

+0

@surisahani:那麼,你有什麼建議? – ahsan

+0

只需通過startActivity試試代碼即可。 –

回答

1

改變你的代碼如下圖所示,

backButton.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 

if(webView.canGoBack()){ 
      System.out.println("!!! BACK !!!"); 

      webView.goBack(); 
} 
     } 
    }); 
+0

@llango J:後退按鈕和物理後退按鈕做同樣的事情,並且與類似的概念web瀏覽器後退按鈕無關 – ahsan

1

那麼對於一個我不認爲創建一個Intent時,你應該使用getApplicationContext。您應該只使用對當前活動的引用。這樣Android就會將結果返回給該活動。

例子:

Intent startActivity = new Intent(MyActivity.this, WebViewer.class); 
+0

試過了,沒有工作:( – ahsan

+0

什麼都沒有工作了嗎?它向系統發送一個意圖,表示你想發送一封電子郵件。還有很多其他問題告訴你如何確定沒有應用程序能夠處理這個意圖。 –

+0

我的意思是,如果我從web查看器返回活動C),活動B仍然關閉,並且我回到了活動A上。我想從活動C(Web查看器)回來後進入活動B ... – ahsan

0

我不知道如果我理解你的問題。但如果你想回去,那麼使用下面的代碼。我在webviewer中使用這個代碼。

@Override 
    public void onBackPressed() { 
     if (mainWebView.canGoBack() == true) { 
      mainWebView.goBack(); 
     } else { 
      finish(); 
     } 
    }