0

私のナビゲーションのドロワーには5つのメニューアイテムがあります。そのうちの1つはitem.whenです。このアイテムをクリックするとAboutUsFragmentが呼び出され、そのコンテンツは単なるテキストです。 onBackPressをクリックすると、フラグメントは消えていますが、そのテキストは私のactivity.howに残ります。この問題を解決することはできますか?Fragment onBackPressの問題

私の活動のナビゲーション引き出しの選択項目:

public void selectItem(int position) { 

    Fragment fragment = null; 

    switch (position) { 
     case 0: 
      if (!Constants.login_state) { 
       fragment = new LoginFragment(); 
      } else { 
       Logout(); 
      } 
      break; 

     case 1: 
      Constants.filter = false; 
      Constants.gender = "-1"; 
      fragment = new HomeFragment(); 
      break; 

     case 2: 
      Constants.filter = false; 
      Constants.gender = "2"; 
      StyleFragment.SortingMode = 1; 
      fragment = new StyleFragment(); 
      break; 

     case 3: 
      Constants.filter = false; 
      Constants.gender = "1"; 
      StyleFragment.SortingMode = 1; 
      fragment = new StyleFragment(); 
      break; 

     case 4: 
      fragment = new AboutUsFragment(); 
      break; 

     default: 
      break; 
    } 

    if (fragment != null) { 
     FragmentTransaction fragmentManager = getSupportFragmentManager().beginTransaction(); 
     fragmentManager.replace(R.id.rl_container, fragment); 
     fragmentManager.addToBackStack(null); 
     fragmentManager.commit(); 
     mDrawerList.setItemChecked(position, true); 
     mDrawerList.setSelection(position); 
     setTitle(mNavigationDrawerItemTitles[position]); 
     mDrawerLayout.closeDrawer(Gravity.END); 
    } else { 
     Log.e("HomeActivity", "Error in creating fragment"); 
    } 
} 

とAboutUsFragment:私の活動の

public class AboutUsFragment extends android.support.v4.app.Fragment{ 

private View view; 
private TextView about_us_fragment_text_view; 

public static AboutUsFragment newInstance() { 
    AboutUsFragment fragment = new AboutUsFragment(); 
    Bundle args = new Bundle(); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    view=inflater.inflate(R.layout.fragment_about_us, container, false); 
    Casting(view); 
    about_us_fragment_text_view.setText(getResources().getString(R.string.about_us)); 
    ChangeUIFont.ChangeFont((ViewGroup) view, getContext()); 

    return view; 
} 


//casting parameters 
public void Casting(View v){ 
    about_us_fragment_text_view= (TextView) v.findViewById(R.id.about_us_fragment_text_view); 
}} 

onBackPress:

@Override 
public void onBackPressed() { 

    if (SearchOpened) { 
     lv_searchResult.setVisibility(View.GONE); 
     SearchOpened = false; 
    } else 
     super.onBackPressed(); 
} 

-------- ------------------------------- AfterSearching ------------------ -------------------------

最後に解決策を見つけました。私のフラグメントで

私はコードの下に追加:

public static final String FRAGMENT_NAME = AboutUsFragment.class.getName(); 

、私の活動で、私はそれを呼び出すときに、私の代わりにヌルの、フラグメントのタグを設定!

fragmentManager.replace(R.id.rl_container, fragment,fragmentName); 
+0

をこのコードを設定し、それが発生し、時にはあなたのコード –

+0

を投稿してください!すべてではありません! –

+0

あなたのアクティビティとフラグメントに 'onBackPressed'コードを投稿してください。 –

答えて

1

は、あなたがここにツールバーを持っている場合、ツールバーの下のOnCreateメソッドの下に私の解決策、 タイプです

assert getSupportActionBar() != null; 
    // getSupportActionBar().setHomeButtonEnabled(true); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
を、この方法を使用する代わりにonBackPressed

}

とあなたのフラグメントのためのマニフェストファイルに

<activity android:name=".yourCurrentFragment"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".whichActivityYouWantToGo" /> 
    </activity> 
+0

あなたは私の問題を解決しました。本当にthx –

+0

あなたは歓迎します、私は開発者を助けることを嬉しく思います –

+0

あなたはそれについて説明できますか?私はその理由を混乱させた!! –

1

これを試してみてください:

@Override 
public void onBackPressed() { 
    if (getFragmentManager().getBackStackEntryCount() == 0) { 
     super.onBackPressed(); 
    } else { 
     getFragmentManager().popBackStack(); 
    } 
関連する問題