2016-08-19 2 views
0

У меня три активности А, В, и С, где С представляет собой деятельность, чтобы позвонить домой экран следующим образомКак закрыть конкретную активность в android?

finish(); 
Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

Во-первых, активность А будет вызывать активность B по

Intent B_intent = new Intent(this, B.class); 
B_intent .putExtra("B_Activity", true); 
this.startActivity(B_intent); 

Затем, из A, я также могу вызвать активность C (A сделать это с помощью потока). Моя проблема заключается в том, как я могу очистить/удалить/завершить работу B при вызове операции С, так что, когда я снова вызову B, она должна перейти к функции onCreate() в классе B_Activity Я пытаюсь использовать функцию

if (getIntent().getBooleanExtra("B_Activity", false)) 
{ 
    finish(); 
} 

Спасибо большое

ответ

0
B.this.finish(); // it will destroys the activity B 

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

B.this.finish(); 
Intent i = new Intent(B.this,C.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 

теперь, когда вы вызываете акт В зависимости от активности A/C он будет вызывать функцию CreateCoate() B.

+0

Извините. Я называю деятельность C от A, а не от B. Таким образом. Я не могу использовать B.this.finish – Jame

+0

разработать ваш поток? im не получить точно, чего вы хотите достичь? – Dnyanesh

+0

Я имею в виду, что у меня есть три вида деятельности: A, B, C. Из A я буду называть B и C. Как я могу закончить действие B до того, как я вызову действие C – Jame

1

У меня есть 3 решения для Вас:

1) Прежде всего, вы просто реализовать метод onResume() из B_Activity функциональности, так что, когда вы вернетесь из C_Activity в B_Activity он запускается на выполнение.

2) Я настоятельно рекомендую Fragments, что вы должны использовать для таких сценариев.

3) Если это не решит проблему, то лучше всего подходит для такого случая использования, чтобы сделать статического фабричного метода как это:

public static void finishActivity(MainActivity mainActivity){ 
     if(mainActivity!=null) 
      mainActivity.finish(); 
    } 

Теперь звоните:

MainActivity.finishActivity(mainActivity); 

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

Надеюсь, это поможет. Счастливое кодирование :)

Смежные вопросы