2012-09-04 164 views
0

我創建了一個帶有碎片的小型Android 4應用程序。 在所有這些片段中,我有一些網頁瀏覽,如果我點擊一個不同的片段,我想加載一個不同的網站。WebView裏面的片段 - 後退按鈕?

我現在有TabOne.java; TabTwo.java; TabThree.java等。

我也想知道:我可以使這個應用程序不需要TabOne.java,TabTwo.java等;只有從MainActivity.java?我的意思是,有一個單一的WebView,當點擊不同的標籤時,這個WebView加載不同的Url(根據選定的標籤)。 如果這是不可能的,你能告訴我什麼是錯在這裏(TabOne.java):

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) 
{ 
    View view = inflater.inflate(R.layout.tabone, container, false); 
    myWebView = (WebView) view.findViewById(R.id.webview); 
    myWebView.getSettings().setPluginsEnabled(true); 
    myWebView.loadUrl("http://m.stirileprotv.ro"); 
    myWebView = new WebView(getActivity()); 
    myWebView.setOnKeyListener(new OnKeyListener(){ 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
        if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack())        
      { 
         myWebView.goBack(); 
         return true; 
        } 
        return false; 
      } 
    }); 
    myWebView.setWebViewClient(new WebViewClient() { 
    @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (Uri.parse(url).getHost().equals("m.stirileprotv.ro")) { 
       myWebView.loadUrl(url); 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 
    }); 
    return view; 
} 

回答

0

我所做的是在活動範圍內實現它,然後有一個公共靜態的,所以什麼:

在主活性:

public class MainActivity extends FragmentActivity{ 
    public static WebView myWebView; 
    ... 

    @Override 
    public void onBackPressed() { 
     if (getSupportFragmentManager().findFragmentByTag("yourtag") != null) { 
      if(myWebView.canGoBack()) 
       myWebView.goBack(); 
      else { 
       super.onBackPressed(); 
      } 
     } 
     else 
      super.onBackPressed(); 
    } 
    ... 
} 

和該片段內引用它:

MainActivity.myWebView = (WebView) getView().findViewById(R.id.webview); 

並確保當您創建您添加標籤的片段時

transaction.replace(R.id.yourfragid, newfragment, "yourtag");