0

我无法重新加载我的片段状态。

架构是这样的:

我有Activity A一个Fragment F. 使用选项菜单Activity A打开带有 SettingsFragment 的 SettingsActivity(带有startActivity())。在这段时间里,Fragment F他做他平常的事,叫onSaveInstanceState, onPause, onStop。这里一切都好。

一旦用户点击后退按钮,SettingsActivity 就会关闭并且Fragment F应该重新初始化。问题从这里开始。Fragment F没有再onCreateView打电话。它也不叫onActivityCreated。调用的第一个方法是onStart.

那么我在哪里可以捕获我的 savedInstanceState Bundle 以重新初始化我的自定义成员变量?

为什么Fragment F成员变量(指向片段中的某些视图)仍然(或再次?)初始化。

谢谢你的帮助!

以下是一些代码片段:

片段 F

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    Log.d(this, "onCreateView");
    return Butterknife.bind(this, inflater.inflate(R.layout.fragment_video_mockup, container, false));
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
    Log.d(this, "onActivityCreated");
    super.onActivityCreated(savedInstanceState);
    if(savedInstanceState != null)
    {
        Log.d(this, "... loading from saved instance");
        this.initFromArgument(savedInstanceState.getBundle(ARG_SAVED_STATE));
    }
    else if(this.getArguments() != null)
    {
        Log.d(this, "... loading from external arguments");
        this.initFromArgument(this.getArguments());
    }
}
@Override
public void onSaveInstanceState(Bundle outState)
{
    super.onSaveInstanceState(outState);
    Log.d(this, "... saving");
    outState.putBundle(ARG_SAVED_STATE, createArgument(this.waveform, this.sequencer, this.paths));
}

活动一

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    Log.d(this, "options menu selected (" + item.getTitle() + ")");
    switch(item.getItemId())
    {
        case R.id.action_settings:
            this.startActivity(new Intent(MainActivity.this, SettingsActivity.class));
            break;
        case R.id.action_feedback:
            this.onFeedbackClick();
            break;
        default:
            throw new AssertionError("wrong option item selected");
    }
    return super.onOptionsItemSelected(item);
}
4

0 回答 0