Когда закончить Намерение - PullRequest
0 голосов
/ 01 сентября 2018

Я сделал ButtomNavigationBar, как вы можете видеть, и каждый раз, когда я выбирал другой элемент на панели, у него начиналось другое намерение, поэтому, когда я нажимаю кнопку «назад», он выполняет все начавшиеся действия. Таким образом, временное решение, которое я обнаружил, это использовать finish () каждый раз, когда я выбираю другой элемент, но теперь, когда я дважды щелкаю по элементу, приложение завершает работу

bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
  @Override
  public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    int i = item.getItemId();
    if (i == R.id.navigation_home) {
      item.setCheckable(false);
      finish();
      return true;
    } else if (i == R.id.navigation_dashboard) {
      Intent intent1 = new Intent(Home.this, ActivityOne.class);
      startActivity(intent1);
      item.setCheckable(true);
      finish();
      return true;
    } else if (i == R.id.navigation_notifications) {
      Intent intent2 = new Intent(Home.this, ActivityTwo.class);
      startActivity(intent2);
      item.setCheckable(true);
      finish();
      return true;

    } else if (i == R.id.nav_slideshow) {
      Intent intent3 = new Intent(Home.this, ActivityThree.class);
      startActivity(intent3);
      item.setCheckable(true);
      finish();
      return true;
    }

    return false;
  }

});

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

вы можете использовать android:noHistory="true" в теге манифеста вместо того, чтобы вручную завершать действие каждый раз

когда вы устанавливаете android:noHistory="true" для действия, то у этого действия нет истории обратного стека. это означает, что если вы выйдете из этого занятия, вы не сможете вернуться назад, нажав кнопку «Назад». это то же поведение, что и при использовании finish();

вы можете установить это в своем манифесте вот так

<application ... >
    <activity android:name="com.example.myapp.MainActivity"
              android:noHistory="true">
    </activity>
</application>

запомните, установите noHistory для тех действий, к которым вы не хотите возвращаться, нажав

0 голосов
/ 01 сентября 2018

Может ли это помочь?

bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
    int lastItemId = -1;

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        int i = item.getItemId();
        if (i == R.id.navigation_home && lastItemId != i) {
            lastItemId = i;
            item.setCheckable(false);
            finish();
            return true;
        } else if (i == R.id.navigation_dashboard && lastItemId != i) {
            lastItemId = i;
            Intent intent1 = new Intent(Home.this, ActivityOne.class);
            startActivity(intent1);
            item.setCheckable(true);
            finish();
            return true;
        } else if (i == R.id.navigation_notifications && lastItemId != i) {
            lastItemId = i;
            Intent intent2 = new Intent(Home.this, ActivityTwo.class);
            startActivity(intent2);
            item.setCheckable(true);
            finish();
            return true;

        } else if (i == R.id.nav_slideshow && lastItemId != i) {
            lastItemId = i;
            Intent intent3 = new Intent(Home.this, ActivityThree.class);
            startActivity(intent3);
            item.setCheckable(true);
            finish();
            return true;
        }

        return false;
    }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...