2

我有一個奇怪的問題,我從來沒有見過任何地方,所以我已經訴諸張貼在這裏,希望我說清楚。應用程序恢復後沒有顯示標題的片段?

我有一個簡單的SherlockFragmentActivity,如下圖所示,它包含三個片段,它們的都在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 API最小支持API 17。我看到這個問題的測試手機是HTC One S - 不確定在其他設備上,但我是將開始尋找。

回答

2

偶爾(...)留下了一段

後,這聽起來像是你的應用程序在此期間喪生。

確保使用onSaveInstanceState保存實例狀態(如顯示的標題),並將其恢復爲Activity.onCreateFragment.onViewCreated

+0

但是,它不打開回到FragmentActivity不閃屏幕意味着它沒有被殺害?還是我誤會了? – whitfin

+1

@ Zackehh9lives不,不。這就是我最喜歡這個平臺的原因。應用程序狀態與進程狀態無關。您可以在一個進程中的多個進程或多個應用程序中擁有一個應用程序而當你的應用程序無法執行代碼(沒有進程來承載它),它是**沒有**死了。 –

+0

啊不知道。如果我滑動到一個新的片段,並且菜單改變(如我在原始問題中提到的那樣改變標題),不管這個過程是否已被殺死,是否不應該再次設置標題?因爲在我的任何片段之間滑動對所有標題沒有任何影響(對於額外的問題抱歉,我只是完全迷失了)。 – whitfin