Как выйти из приложения?

327
01 августа 2017, 16:01

В моем приложении одна главная активность, и я добавляю в стек фрагменты при переходе (в последующих фрагментах схема такая же):

    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_con‌​tainer, lsf)
            .addToBackStack("").commit();
    }

С обратной навигацией проблем нет, а вот выйти из приложения не получается. Как можно разрулить?

Answer 1

Попробуйте метод Activity#finish()

Answer 2
      Получилось организовать выход из приложения через метод 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){
            }
        });
    }
}
READ ALSO
Статус sms-сообщения

Статус sms-сообщения

Никак не получается запросить статусы смс-сообщений - приложение вылетает

208
Ошибка Could not find or load main class

Ошибка Could not find or load main class

Вроде все работало, я вышел из IDE, потом опять зашел, и при запуске выходит ошибка

435
Вызов метода по событию , регистрация на событие

Вызов метода по событию , регистрация на событие

Как на java реализовать что бы по определённому событию вызывались определённые методы, которые подписаны на это событиеТо есть если нажали...

205
Как исключить дубликаты из HQL запроса?

Как исключить дубликаты из HQL запроса?

Есть метод который из таблицы с предложениями о продаже машин выбирает все марки включая дубликатыКак избавится от дубликатов а уровне запроса?

223