В моем приложении одна главная активность, и я добавляю в стек фрагменты при переходе (в последующих фрагментах схема такая же):
NewFragment fragment = new NewFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment_container, fragment)
.addToBackStack("").commit();
Обработка нажатия:
@Override
public void onClick(View view) {
LeagueStandingFragment lsf = new LeagueStandingFragment();
Bundle bundle = new Bundle();
bundle.putInt("id", mLeague.getId());
bundle.putString("leagueCaption", mLeague.getCaption());
lsf.setArguments(bundle);
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment_container, lsf)
.addToBackStack("").commit();
}
С обратной навигацией проблем нет, а вот выйти из приложения не получается. Как можно разрулить?
Попробуйте метод Activity#finish()
Получилось организовать выход из приложения через метод dispatchKeyEvent
(KeyEvent event) (хотя, возможно, это и корявый способ, но он работает). Но
погодя понял, что лучше предложить пользователю подтверждать сие действие через
диалоговое окно. Нашел пример кода в просторах интернета, но при подключении
опять перестал работать выход, и более того никакого диалогового окна не наблюдается???
public class FragmentActivity extends AppCompatActivity {
public static final String TAG = "TESTING";
private FragmentManager mFragmentManager;
protected Fragment createFragment() {
return GreetFragment.newInstance();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment);
mFragmentManager = getSupportFragmentManager();
Fragment fragment = mFragmentManager.findFragmentById(R.id.fragment_container);
Log.i(TAG, "protected void onCreate(Bundle savedInstanceState)");
if (fragment == null) {
fragment = createFragment();
mFragmentManager.beginTransaction()
.add(R.id.fragment_container, fragment)
.commit();
}
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
if (mFragmentManager.getBackStackEntryCount() == 0){
openQuitDialog();
finish();
}
mFragmentManager.popBackStack();
return true;
}
}
return super.dispatchKeyEvent(event);
}
private void openQuitDialog(){ //метод предлагающий подтвердить выход
AlertDialog.Builder quitDialog = new AlertDialog.Builder(FragmentActivity.this);
quitDialog.setTitle(R.string.quit);
quitDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int which){
finish();
}
});
quitDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int which){
}
});
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вроде все работало, я вышел из IDE, потом опять зашел, и при запуске выходит ошибка
Как на java реализовать что бы по определённому событию вызывались определённые методы, которые подписаны на это событиеТо есть если нажали...
Есть метод который из таблицы с предложениями о продаже машин выбирает все марки включая дубликатыКак избавится от дубликатов а уровне запроса?