2015-07-24 4 views
0

Я пытаюсь вернуться к моему предыдущему фрагментуМогу ли я использовать addToBackStack(), когда я импортировал только файл android.app.FragmentManager? Android

поэтому я попытался с помощью onBackPressed() и вот мой код

@Override 
public void onBackPressed() 
{ 
    if(getFragmentManager().getBackStackEntryCount() > 0) 
     getFragmentManager().popBackStack(); 
    else 
     super.onBackPressed(); 
} 

У меня ошибка в super.onBackPressed(), и он говорит, что «не удается разрешить метод «onBackPressed», поэтому мне интересно, почему так я искал о том, как перейти к моему предыдущему фрагменту и обнаружил, что я использовал addToBackStack()

if (fragment != null) { 
       android.app.FragmentManager fragmentManager = ((Activity) context).getFragmentManager(); 
       android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       fragmentTransaction.replace(R.id.frame_container_expandable, fragment); 
       fragmentTransaction.commit(); 
      } else { 
       Log.e(TAG, "Error in creating fragment"); 
      } 

, когда я пытаюсь поставить addToBackStack() не распознает его. Почему так? Это потому, что я использую android.app.FragmentManager? или есть другое решение для этого? Возвращаясь к предыдущему фрагменту? Спасибо за помощь


В моей LogCat он говорит Error:(88, 18) error: cannot find symbol method onBackPressed()

ответ

0

Да, вы можете использовать его.

getFragmentManager().popBackStack()

не будет работать, если вы не addToBackStack

FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
      transaction.replace(R.id.mainActivity_main_content, fragment).addToBackStack("Fragment"); 
      transaction.commit(); 

после того, как вы можете поймать щелкнуть внутри фрагмента

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_fragment_end, container, false); 

     view.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if (keyCode == KeyEvent.KEYCODE_BACK) { 
        getFragmentManager().popBackStack(); 
        return true; 
       } 
       return false; 
      } 
     }); 
     return view; 
    } 
+0

в добавлении addToBackStack() я всегда видеть нулевое значение для этого в различных примерах. есть ли разница, если я поместил свой фрагмент и не использовал null вместо этого? –

+0

У меня ошибка: «Ошибка: (88, 18) error: не удается найти метод символов onBackPressed()» –

+0

Вы пытались использовать библиотеку android.support.v4.app.Fragment' вместо 'android.Fragment'? @KairiSan –