2013-09-04 3 views
3

Я немного мучился, узнав, как закончить деятельность, не дожидаясь ее завершения. Я знаю, что простой «возврат»; заявление будет делать трюк, но в моей архитектуре я не могу этого сделать.Закончить деятельность, не дожидаясь завершения

я в настоящее время:

public abstract class BaseFragmentActivity extends FragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if (savedInstanceState != null) { 
       finish(); 
       return; 
      } 
    } 
} 

и

public class MainActivity extends BaseFragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      /* code still executed here even when parent finish(); is called */ 
    } 
} 

Как я могу предотвратить выполнение кода в MainActivity раз отделки() в моем абстрактном классе называется?

ОБНОВЛЕНО КОД:

public abstract class BaseFragmentActivity extends FragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if (savedInstanceState != null) { 
       finish(); 
       return; 
      } 
    } 
} 

public class MainActivity extends BaseFragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if (isFinishing()) { 
       return; 
      } 
    } 
} 

Странная вещь, хотя, «возвращение», кажется, работает, но мой FragmentManager как-то запускает фрагмент в конце.

+0

вы звоните super.onCreate() в Основная деятельность? –

+0

Да, я. Это на самом деле первая строка. Я уточню это в вопросе. – Tomap

+0

@Tomap почему это абстрактный класс? также он должен быть .call super before if. Также проверьте заметку в конце страницы http://developer.android.com/training/basics/activity-lifecycle/starting.html – Raghunandan

ответ

1

Попробуйте обернув его в

if(isFinishing()){ 

    //code you don't want to execute if finish() is called 

} 
+0

Спасибо, это было то, что я искал. Я обновил свой ответ с помощью своего кода. – Tomap

1

Почему вы не создаете логическое значение и не устанавливаете его true, а завершение будет вызвано?

boolean end = false; 

здесь вы сделаете это правда

public abstract class BaseFragmentActivity extends FragmentActivity { 
    protected void onCreate(Bundle savedInstanceState) { 
end = true; 
    } 
} 

, а затем использовать, если заявление

public class MainActivity extends BaseFragmentActivity { 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
if(end = false){ 
//stuff here} 
else { 
finish(); 
} 
    } 
} 
+0

Я действительно думал о создании абстрактного логического атрибута в родительском классе, но я надеялся, что пропустил метод, который уже существует, и делает то, что мне нужно. Если я не получу ответ, который я ищу, я подтвержу ваш ответ. :) – Tomap

+0

ty, и удачи =) –

+0

Логическое значение, которое я искал, это то, на что ответили триггеры. Я сделал ваш комментарий полезным, и я подтвержу его ответ. :) – Tomap

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