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