Как уничтожить предыдущую активность в Activity?

У меня есть четыре активности, то есть A, B, C и D. A запускает B, B запускает C, C запускает D. Когда C запускает D, я хочу уничтожить активность B в зависимости от ситуации (логика для этого останется в активность C), так что, когда я вернусь из D, он будет следовать по пути D-> C-> A. Итак, я хочу уничтожить активность B из C. Как это возможно?


person dev_android    schedule 07.05.2012    source источник
comment
вы можете получить ответ здесь!   -  person Vishesh Chandra    schedule 07.05.2012
comment
возьмите ссылку действия B на C и вызовите ref.finish(); где ref — ссылка на действие B.   -  person Akram    schedule 07.05.2012


Ответы (5)


завершить действие B, когда вы вызываете действие C, зависит от вашей логики. Например

if(true){
Intent in = new Intent(B.this,c.class);
startActivity(c);
}
else
{
Intent in = new Intent(B.this,c.class);
startActivity(c);
finish();
}
person Raghu Mudem    schedule 07.05.2012
comment
Я хочу закончить B, когда я звоню D из C, а не закончить B из самого B. Завершение Б из Б — это даже не вопрос новичка. - person dev_android; 08.05.2012
comment
Хорошо, тогда вы можете вызвать startActivityForResult(in,5); чтобы запустить действие C. и реализовать метод переопределения в действии B, например, @Override protected void onActivityResult (int requestCode, int resultCode, Intentintent) { super.onActivityResult (requestCode, resultCode,intent); если (resultCode == 0) { Finish(); }else{} } И установите код результата в Activity, когда вы вызываете Activity D, например Intent backintent = getIntent(); установитьРезультат(0); Intent in = new Intent(C.this,D.class); начать активность (в); Вот и все - person Raghu Mudem; 08.05.2012

FinishActivity (Код запроса);

этот метод может помочь вам ..

Что нужно сделать, так это начать действие C с некоторым кодом запроса из B... и, соответственно, завершить действие с этим кодом запроса.

person NullPointerException    schedule 07.05.2012

Просто вызовите finish(); в действии B onActivityResult при возврате из C в зависимости от желаемой логики.

person waqaslam    schedule 07.05.2012

Я думаю, что вы можете сделать так, чтобы вы могли зарегистрировать трансляцию в каждом классе и всякий раз, когда вы хотите закончить sendbroadcast и завершить это действие.

        // REGISTER IN ONCREATE
        BroadcastReceiver form_filled = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String received_action = intent.getAction();

                if (received_action.equals("finish_a")) {
                    finish();
                }
            }
        };
        registerReceiver(form_filled, new IntentFilter("finish_a"));

        // THIS YOU HAVE TO DO WHEN YOU WANT TO FINISH
        Intent temp_intent = new Intent();
        temp_intent.setAction("finish_a");
        sendBroadcast(temp_intent);
person Bharat Sharma    schedule 07.05.2012

Хорошо, тогда вы можете вызвать startActivityForResult(in,5); чтобы запустить действие C. и реализовать метод переопределения в действии B, например

 @Override 
   protected void onActivityResult(int requestCode, int resultCode, Intent intent)       {                
super.onActivityResult(requestCode, resultCode, intent); 
    if(resultCode==0)
    { 
      finish(); 
    }
    else
   {

    } 
    }

И установите код результата в Activity, когда вы вызываете Activity D, например

Intent backintent = getIntent(); 
  setResult(0); 
  Intent in = new Intent(C.this,D.class); 
  startActivity(in);

Вот и все....

person Raghu Mudem    schedule 10.05.2012