закрыть деятельность от другой деятельности? - PullRequest
0 голосов
/ 03 августа 2011

Кто-нибудь знает, как закрыть действие от другого действия ??например: у меня есть 3 действия (действие A, B и C) и из действия C, я могу закрыть действие A .. моей структурой деятельности является действие A -> действие B -> действие C, как закрыть действие A издействие C?

я пробовал этот код:

@Override

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent goToLockScreen= new Intent(this,LockScreenForm.class);
        startActivity(goToLockScreen);
        finish();

, но этот код только закрывает действие A из действия B и не может закрыть действие A непосредственно из действия C

Кто-нибудь знает о закрытии действия непосредственно из другого действия ??спасибо ..

Ответы [ 5 ]

1 голос
/ 16 июля 2012

попробуй у меня отлично работает

   `public class aActivity extends Activity {

    public static Activity handleToClose;

    @Override
          public void onCreate(Bundle savedInstanceState) {
    .
    .
    .
    handleToClose = this;
    }

    public void onClick(View v)
    {
   Intent i = new Intent(this, act2.class);
   startActivity(i);
     }
    }`

Теперь Вы должны закончить Задание-A из Задания-B

Занятие-B или 2-е занятие

    `public class act2 extends Activity {
 public void onCreate(Bundle savedInstanceState) {
      // your code here
          }

     public void onClick(View v)
     {
    aActivity.handleToClose.finish(); //this will finish aActivity (1st Activity)
     finish();//to finish current Activity
     }
      }`
1 голос
/ 03 августа 2011
First Go to parent activity by starting it
@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
switch(Code){
 case A: go to that activity and finsih() this again come back to parent activity
 case B: go to that activity and finsih() this again come back to parent activity
/////and son on
}
0 голосов
/ 03 августа 2011

попробуйте

Если операция обновления запускает другую операцию установки, вы можете переопределить void onActivityResult (int requestCode, int resultCode, Intent intent) в операции обновления, обеспечивая следующую реализацию. Кроме того, когда операция обновления запускает операцию установки, она должна делать это с startActivityForResult (Intent, int) , а не с startActivity (Intent) .

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
finish();
}
0 голосов
/ 03 августа 2011

Как насчет запуска обоих B и C forResult и отправки результата назад в предыдущее действие, чтобы A наконец вызвал finish()? Как это:

A startActivityForResult() -> B startActivityForResult() -> C
C setResult() -> B onActivityResult(){setResult()} -> C onActivityResult(){finish()}

Звучит сложно, но, может быть, это можно использовать в качестве обходного пути?

0 голосов
/ 03 августа 2011
Intent goToLockScreen= new Intent(this,LockScreenForm.class);
goToLockScreen.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Это предписанный способ, и вы должны следовать ему .. если вы хотите какое-то другое поведение, вы можете его реализовать .. Есть много вопросов, задаваемых по этой теме .. см. Другие вопросы ...

...