2017-03-17 31 views
1

我在導航抽屜活動中創建了選項卡式活動。我已將導航抽屜中的列表與單個片段鏈接起來。我還在ft.commit()之前使用了命令ft.addToBackStack(null)。這非常好,我可以用它來關閉抽屜裏的碎片。現在我已經在選項卡式活動(主頁)的片段中創建了網頁瀏覽。我添加了onBackPressed返回到webview中,現在addToBackStack方法停止工作。addToBackStack不能與onBackPressed方法配合使用

對於導航抽屜片段,

private void dispaySelectedScreen(int id) { 
    Fragment fragment = null; 

    switch (id) { 
     case R.id.fragment1: 
      fragment = new Fragment1(); 
      break; 
     case R.id.fragment2: 
      fragment = new Fragment2(); 
      break; 
     case R.id.fragment3: 
      fragment = new Fragment3(); 
      break; 
     case R.id.fragment4: 
      fragment = new fragment4(); 
      break; 
    } 

    if (fragment != null) { 
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     ft.replace(R.id.content_main, fragment); 
     ft.addToBackStack(null); 
     ft.commit(); 
    } 

onBackPressed方法

@Override 
public void onBackPressed() { 
    if (hWebView.canGoBack()) { 
     hWebView.goBack(); 
    } else if (!getFragmentManager().popBackStackImmediate()) 

     if (sWebView.canGoBack()) { 
      sWebView.goBack(); 
     } else if (!getFragmentManager().popBackStackImmediate()) 

      if (dWebView.canGoBack()) { 
       dWebView.goBack(); 
      } else if (!getFragmentManager().popBackStackImmediate()); 



} 

請幫我!

回答

1

請嘗試以下代碼:在選項卡式活動(主頁)中覆蓋onBackPressed()

@Override 
public void onBackPressed() { 
    FragmentManager fm = getSupportFragmentManager(); 
    if (hWebView.canGoBack()) { 
     hWebView.goBack(); 
    } else if (!getFragmentManager().popBackStackImmediate()) 
     if (fm.getBackStackEntryCount() > 0) { 
      fm.popBackStack(); 
     } else { 
      super.onBackPressed(); 
     } 
} 
+0

工作不適合我。每當我再次單擊網頁視圖內,它被殺死的應用.. –

+0

添加代碼的活動,並使用'getSupportFragmentManager()'代替 – rafsanahmad007

+0

碎片神韻:裏面名單當我按下顯示主要活動的後退按鈕時,導航抽屜正在關閉,但是webview(標籤片段中的hWebView)中的後退按鈕不工作,並且按下後退按鈕正在啓動應用程序。 –

相關問題