in meiner Navigationsleiste gibt es 5 Menüpunkte.Eine von ihnen ist über uns item.wenn ich auf dieses Element klicken, rufe ich AboutUsFragment und zeigen Sie es (sein Inhalt ist nur ein Text) .aber wenn ich klicken Sie auf BackPress, Fragment ist weg aber seine Texte bleiben auf meiner Aktivität.wie kann ich dieses Problem lösen? Worauf ist es bezogen ?!Probleme mit Fragment onBackPress
wählen Sie den Punkt der Navigationsleiste in meiner Tätigkeit:
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");
}
}
und 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 in meiner Tätigkeit:
@Override
public void onBackPressed() {
if (SearchOpened) {
lv_searchResult.setVisibility(View.GONE);
SearchOpened = false;
} else
super.onBackPressed();
}
-------- ------------------------------- AfterSearching ------------------ -------------------------
Endlich fand ich die Lösung!
in meinem Fragment habe ich unten Code:
public static final String FRAGMENT_NAME = AboutUsFragment.class.getName();
und in meiner Tätigkeit, habe ich das Tag des Fragments, wenn ich es nennen, statt null!
fragmentManager.replace(R.id.rl_container, fragment,fragmentName);
bitte posten Sie Ihren Code –
manchmal kommt es vor! nicht die ganze Zeit! –
poste auch deinen 'onBackPressed' Code in deinem Activity and Fragment –