首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法保存包含片段的活动的instanceState

无法保存包含片段的活动的instanceState
EN

Stack Overflow用户
提问于 2015-08-22 17:49:56
回答 1查看 34关注 0票数 0

我有一个包含表格布局的活动,在每个选项卡中,我有两个片段,每个片段都包含回收视图。

当我试图点击回收视图中的一个项目时,我想从另一个活动中转移并保存源活动的instanceState .但是,当我试图访问Bundle时,它返回null。

当单击名为onClick的选项卡时,这是我的CasesResultsTab():

代码语言:javascript
复制
@Override
public void onClick(View v, int position) {
    Case oCase = list.get(position);
    Intent intent = new Intent(getActivity(), ViewCaseActivity.class);
    intent.putExtra("ID", oCase.getCaseId());
    intent.putExtra("className", "SearchableActivity");

    getActivity().startActivity(intent);
}

在此之后,我将父活动的状态保存如下:

代码语言:javascript
复制
@Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        savedInstanceState.putString("query", query);
        super.onSaveInstanceState(savedInstanceState);
    }

onCreate,我是这样访问它的:

代码语言:javascript
复制
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_searchable);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    this.setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    if(savedInstanceState != null){
        this.query = savedInstanceState.getString("query");
        Log.d("JC","Dito");
    } else {
        Intent intent = getIntent();
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            this.query = intent.getStringExtra(SearchManager.QUERY);
        }
    }

    Log.d("JC", this.query);

    setUpTabs();
}

当我尝试记录查询时,它会返回一个错误,说明java.lang.NullPointerException: println需要消息,所以从技术上讲,我的Bundle在这里是空的。

为什么是这样?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-08-22 18:41:55

当您测试这个时,整个Bundle是null还是只是查询字段?另外,你确定你一直在正确地测试状态恢复吗?为了触发被调用的onSaveInstanceState,您必须在设置中将“不要保持活动”设置为真,然后将应用程序/将其带回前台,或者旋转手机进行视图配置更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32159064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档