Почему кнопка "Назад" не работает должным образом
У меня есть два вида деятельности - 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);