3

我有一个奇怪的问题,我从未在 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 - 还不确定在其他设备上,但我要开始寻找.

4

1 回答 1

3

偶尔(...)离开一段时间后

这听起来像您的应用程序进程同时被杀死。

确保使用 或 保存实例状态(如显示的标题)并将onSaveInstanceState其恢复。Activity.onCreateFragment.onViewCreated

于 2013-06-20T23:17:58.633 回答