2

У меня есть странная проблема, которую я никогда не видел нигде в SO, поэтому я прибегал к публикации здесь, надеясь, что я сделаю это достаточно ясно.Фрагменты, не отображающие заголовок после подачи заявки, возобновляются?

У меня есть простой SherlockFragmentActivity, как показано ниже, в котором содержится три фрагмента, которые все называют getActivity().setTitle() в своем onCreateOptionsMenu(), что позволяет моему приложению изменять названия в зависимости от того, какой фрагмент виден.

Это работает как желаемое, но по какой-то причине (возможно, несвязанной), когда я выйти мое приложение с помощью кнопки HOMEиногда название не видно при повторном открытии приложения. Кажется, я должен закрыть свое приложение и снова открыть его, это нормально, но, оставив его на некоторое время, название не будет там, когда я его снова открою.

У меня нет абсолютно никакой идеи, что может быть причиной этого, поэтому любая помощь оценивается. Расположение моего приложения (отношение к этому вопросу) является основной заставкой (как деятельность) с нагрузочным баром, который затем открывает следующую FragmentActivity:

import com.actionbarsherlock.app.ActionBar; 
import com.actionbarsherlock.app.SherlockFragmentActivity; 

import android.os.Bundle; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import static java.lang.Math.*; 

public class FragmentControl extends SherlockFragmentActivity { 

    private static final int NUM_PAGES = 3; 

    private ViewPager mPager; 

    private PagerAdapter mPagerAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fragment_control); 

     ActionBar action = getSupportActionBar(); 
     action.setDisplayShowTitleEnabled(true); 
     action.setDisplayShowHomeEnabled(false); 

     mPager = (ViewPager)findViewById(R.id.pager); 
     mPagerAdapter = new FragmentControlAdapter(getSupportFragmentManager(), NUM_PAGES); 
     mPager.setAdapter(mPagerAdapter); 
     // If this activity wasn't called after a reload 
     if((Integer)getIntent().getExtras().get("current") == null){ 
      // Always start on the middle page, or as close as possible 
      mPager.setCurrentItem((int) ceil(NUM_PAGES/2)); 
     // Otherwise start on the page we left for a smoother experience 
     } else { 
      mPager.setCurrentItem((Integer)getIntent().getExtras().get("current")); 
     } 
    } 
} 

Только тогда, когда приложение вновь открывает в FragmentActivity сделать Я вижу эту проблему, когда вы открываете что-либо еще и переходите к этой деятельности, это нормально (как и следовало ожидать).

Любая помощь приветствуется, надеюсь, что я ясно дал понять.

О, и если это имеет значение, я в настоящее время нацелен на API 17 с минимальной поддержкой API 8. Тест-телефон, на который я вижу эту проблему, - это HTC One S - не уверен на других устройствах, но я собираюсь начать искать.

ответ

2

иногда (...) после того, как оставить его на некоторое время

Это звучит как процесс приложения будет убит в то же время.

Обязательно сохраните состояние экземпляра (например, какое название отображается) с помощью onSaveInstanceState и восстановите его в Activity.onCreate или Fragment.onViewCreated.

+0

Но разве это не открытие обратно в FragmentActivity, а не экран Splash означает, что он не был убит? Или я ошибаюсь? – whitfin

+1

@ Zackehh9lives Нет. Это не так. Это то, что делает меня, как этот плафом больше всего. Состояние приложения не привязано к состоянию процесса. У вас может быть одно приложение во многих процессах или во многих приложениях в одном процессе. И когда ваше приложение не может выполнить код (нет процесса для его размещения), он не ** не мертв. –

+0

А не знал об этом. Если я перейду к новому фрагменту, и меню изменится (изменив заголовок, как я упоминал в исходном вопросе), не следует ли это снова задавать заголовок независимо от того, был ли этот процесс убит? Поскольку прокручивание между любыми моими фрагментами вообще не влияет на название (извините за дополнительный вопрос, я просто совсем потерял это). – whitfin

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