Почему кнопка "Назад" не работает должным образом

У меня есть два вида деятельности - A и A -B, и я передаю значение из акта A в закон B с помощью намерения. Все работает хорошо. Когда я открываю свой Act-B, я получаю значение из Act-A, теперь проблема заключается в том, что когда я нажимаю кнопку "Назад" (дважды), тогда только я получаю свой Act-A. когда я нажимаю один раз на то же действие, оно не перемещает меня по моему Акту-А.

Акт-A:

    btn_add_city.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                        // Launching Add_City Screen
                        Intent i = new Intent(getApplicationContext(), 
    Acti-B.class);
                        startActivity(i);
passmyValue();

                    }
                });

        public void passmyValue(){

                intent = new Intent(getApplicationContext(),Act-B.class);
                intent.putExtra("name", receive.getText().toString());
                startActivity(intent);
            }

Акт-B:

receive = (TextView)findViewById(R.id.userHidden);
receive.setText(getIntent().getStringExtra("name"));

5 ответов

Решение

Вы просто вводите два новых намерения и начинаете два вида деятельности, а именно: активность B и активность B. На самом деле у вас есть три действия в стеке задач, это Акт-А, Акт-Б, Акт-Б.

Нет необходимости начинать одно и то же занятие дважды. Попробуйте коды ниже, я думаю, это помогает.

btn_add_city.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // Launching Add_City Screen
        // It's no need to start the same activity for twice
        passmyValue();
    }
});

public void passmyValue(){
    intent = new Intent(getApplicationContext(),Act-B.class);
    intent.putExtra("name", receive.getText().toString());
    startActivity(intent);
}

Поэтому я думаю, что вы должны быть в состоянии играть с ANDROID INTENTS. И это может быть аналогичным вопросом для вас. Я надеюсь, что это поможет вам, если нет, пожалуйста, не стесняйтесь ответить.:):)

Ваша проблема в этом фрагменте кода:

// Launching Add_City Screen
Intent i = new Intent(getApplicationContext(), Acti-B.class);
startActivity(i);
passmyValue();

Вы запускаете Activity-B два раза, первый раз без каких-либо дополнений и второй раз внутри passmyValue(),

Поскольку ваш Activit-B, я думаю, использует режим запуска по умолчанию, то у вас есть 2 экземпляра Activity-B. Таким образом, ваш задний стек будет выглядеть так: Activity-A -> Activity-B -> Activity-B. Таким образом, вам нужно дважды нажать назад, чтобы вернуться к Activity-A.

Просто удалите эти строки:

Intent i = new Intent(getApplicationContext(), Acti-B.class);
startActivity(i);

В этом куске кода:

@Override
                    public void onClick(View view) {
                        // Launching Add_City Screen
                        Intent i = new Intent(getApplicationContext(), 
    Acti-B.class);
                        startActivity(i);
passmyValue();

                    }

Удалите первое намерение, потому что вы запускаете действие дважды. Это, в свою очередь, означает, что ваша деятельность B запускается один раз без дополнительного намерения, и вдобавок ко всему этому. Нажатие назад закрывает первый и еще раз закрывает второй экземпляр. Просто удалите строки и запустите действие B следующим образом:

@Override
   public void onClick(View view) {
   passmyValue();
}

В onClick() вы начинаете действие B

Intent i = new Intent(getApplicationContext(), 
    Acti-B.class);
                        startActivity(i);

и ты снова звонишь startActivity(intent) в методе PassMyValue, где намерение такое же, как я. Итак, вы запускаете Activity-B 2 раза. Вы должны исправить это, удалив

Intent i = new Intent(getApplicationContext(), 
    Acti-B.class);
                        startActivity(i);
Другие вопросы по тегам