Intereting Posts
Чтобы показать статическую html-страницу в android В чем разница между MediaPlayer и VideoView в Android? Android: разница между положительной, отрицательной и нейтральной кнопками Как получить путь к файлу с SD-карты в android VS эмулятор для Android перестает отвечать на клавиатуру Ориентация / разработка для нескольких мобильных платформ с одним языком программирования (C #)? Затрат и выгод? Очистить память кэша Пикассо Макет с разными цветами Как предотвратить андроидное приложение от обновления из Google Play Store? Используйте смартфонную камеру из веб-приложения для сканирования QR-кода CheckSelfPermission возвращает PERMISSION_GRANTED для отозванного разрешения с targetSdkVersion <= 22 Как программно отключить или удалить спаренное устройство Bluetooth на Android? Как подавить конкретное предупреждение Lint для устаревших функций Android? Задать заголовок панели инструментов Как запустить onListItemClick в Listactivity с помощью кнопок в списке?

Android как закончить деятельность от другой деятельности

В моем приложении у меня есть 3 действия.

С 1-го занятия он переходит на 2-й и с 2-го по 3-й. С 3-го до 1-го снова. И если я нажму кнопку «назад» с первого, тогда он должен перейти на главный экран (приложение остановится). Если я нажму кнопку 1, то он снова перейдет к 2-му действию, и если я нажму 2-ю кнопку назад, тогда он перейдет к 1-му. Затем, если я нажму кнопку 1, то приложение остановится.

Что я хочу, когда я нахожусь в 3-м действии и нажимаю кнопку «Назад», тогда он должен перейти на 1-й и одновременно завершить 2-ю операцию.

Как я могу это сделать?

Solutions Collecting From Web of "Android как закончить деятельность от другой деятельности"

Просто закончите второе действие, когда вы откроете третью активность

Предположим, что во втором действии на каком-то нажатии кнопки вы открываете третью активность, используя начальную активность;

startActivity(intent); finish();//this will finish second activity and open third activity so when you press back from third activity it will open first activity. 

Если вы хотите, зависит от некоторого состояния, то от активности

 setResult(123); 

Что-то вроде этого

Теперь, когда переопределение onActivityResult во втором действии

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==123){ //finish } } 

Также убедитесь, что вам нужно использовать startActivityForResult (намерение, requestCode); Для получения второй активности для начала третьей активности.

 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Activity2 extends Activity{ Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivityForResult(new Intent(new Intent(Activity2.this,Activity3.class)), 12); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(resultCode==123 && requestCode==12){ finish(); } super.onActivityResult(requestCode, resultCode, data); } } import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Activity3 extends Activity{ Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setResult(123); } }); } } 

Когда вы начнете свою третью деятельность, вы должны позвонить в свою вторую активность следующим образом:

startActivityForResult(intent, 0)

Когда вы закончите свою 3-ю деятельность, вы должны включить:

 setResult(RESULT_OK); finish(); 

Он посылает сигнал от 3-го действия к второму.

На втором месте:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { finish(); } 

Он получает этот сигнал и завершает 2-ю операцию.

Вы должны запустить 1-ю операцию в 3-й операции с флагом cleartop, когда вам нужно закончить вторую активность.

 class ThirdActivity extends Activity { .... if (somecondition) { /* directly go to FirstActivity, finish all intermediate ones.*/ Intent intent = new Intent(this, FirstActivity.Class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } else { finish(); // to simply return to 2nd activity. } ..... .... } 

Кроме того, вы можете установить флаг намерения FLAG_ACTIVITY_NO_HISTORY во втором FLAG_ACTIVITY_NO_HISTORY . Таким образом, он не хранится в стеке истории, поэтому, когда вы переходите от 3-го занятия, он переходит прямо к 1-му.

Например

 Intent intent = new Intent(this, SecondActivity.Class); intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(intent); 

Это означает, что при запуске активности из SecondActivity SecondActivity будет завершена автоматически.

Используя этот способ: в первом действии объявите один объект Activity таким образом,

 public static Activity fa; onCreate() { fa = this; } 

Теперь используйте этот объект в другом Управлении для завершения первой активности, например,

 onCreate() { FirstActivity.fa.finish(); } 

Дополнительная информация: Завершите работу из другой деятельности