У меня возникла проблема с добавлением транзакций фрагмента в задний стек. У меня есть Основная деятельность, в которой я заселить мой макет с фрагментом меню:Откат назад не возвращается к предыдущему фрагменту
public class MainActivity extends ActionBarActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getFragmentManager().beginTransaction().add(R.id.frag_container, new MainMenuFragment()).commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Затем внутри MainMenuFragment, пользователь выбирает какой-то вариант, который приводит к замене фрагмента меню с каким-либо другим фрагментом :
public class MainMenuFragment extends Fragment implements OnItemClickListener{
GridView grid;
FragmentManager manager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.main_menu_fragment, container, false);
manager = getActivity().getFragmentManager();
grid = (GridView) root.findViewById(R.id.gridView1);
grid.setAdapter(new MenuTileAdapter(getActivity()));
grid.setOnItemClickListener(this);
return root;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
FragmentTransaction trans = manager.beginTransaction();
if (position == 0){
trans.replace(R.id.frag_container, new BasicSettingsFragment());
trans.addToBackStack(null);
trans.commit();
}
}
}
Для того, что я понимаю, это должно сделать так, чтобы, когда пользователь нажимает кнопку назад на устройстве, они будут б грубо вернитесь к фрагменту меню, но вместо этого выходите из приложения. Что я делаю не так?
попробуйте добавить вместо замены trans.add (R.id.frag_container, new BasicSettingsFragment()); –
Кроме того, я только заметил, когда вращался экран, что фрагмент меню вообще не удалялся, просто скрывался. Когда я повернул свой телефон, он появился над «BasicSettingsFragment». Добавление @GeorgianBenetatos добавляет только новый фрагмент поверх предыдущего. – jammaster
Вы должны опубликовать полный код MainMenuFragment, все выглядит отлично. –