2015-05-26 57 views
-1

我有2個片段,當我更換第二個片段,然後按返回鍵,當時我的第一個片段顯示空白,這裏是我的代碼返回堆棧段空白onbackpressed

Fragment fragment = new MovieDetails(); 
      Bundle args = new Bundle(); 
      args.putString("background", item.getBackg()); 
      args.putString("thumb", item.getThumb()); 
      args.putString("id", item.getCode()); 
      fragment.setArguments(args); 
      String backStateName = fragment.getClass().getName(); 

      boolean fragmentPopped = getActivity() 
        .getSupportFragmentManager().popBackStackImmediate(
          backStateName, 0); 

      if (!fragmentPopped) { // fragment not in back stack, create it. 
       FragmentTransaction ft = getActivity() 
         .getSupportFragmentManager().beginTransaction(); 
       ft.replace(R.id.content_frame, fragment); 
       ft.addToBackStack("TAG"); 
       ft.commit(); 
      } 
      getActivity().getSupportFragmentManager().beginTransaction() 
        .replace(R.id.content_frame, fragment).commit(); 
+0

當你回來按你有你的字符串標識''標籤'' – Piyush

回答

0

你可以做到這一點

private void showFragment() { 

    final Myfragment fragment = new MyFragment(); 
    final FragmentTransaction transaction = 
    getSupportFragmentManager().beginTransaction(); 
    transaction.replace(R.id.fragment, fragment, TAG_FRAGMENT); 
    transaction.addToBackStack(null); 
    transaction.commit(); 
    } 

@覆蓋

public void onBackPressed() { 
    final Myfragment fragment = (Myfragment)getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT); 

    if (fragment.allowBackPressed()) { 
     super.onBackPressed(); 
    } 
+0

嘗試我的代碼,這是在我的作品之上提及。如果有用,然後接受我的回答好。 – Kinjal

+0

請重新格式化您的代碼,因爲它不正確。 – Piyush

+0

它具有showfragment函數nd第二是重寫方法,所以你只要複製這個代碼如果有用。 – Kinjal

0

這probab ly並不是你的問題,但是它是我的:我會在onSaveInstanceState()上淹沒並忘記調用super。這導致在按'後退'後出現空白片段,幾乎肯定是因爲super.onSaveInstanceState()是片段堆棧被保存的位置。