我有一个包含表格布局的活动,在每个选项卡中,我有两个片段,每个片段都包含回收视图。
当我试图点击回收视图中的一个项目时,我想从另一个活动中转移并保存源活动的instanceState .但是,当我试图访问Bundle时,它返回null。
当单击名为onClick的选项卡时,这是我的CasesResultsTab():
@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);
}在此之后,我将父活动的状态保存如下:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putString("query", query);
super.onSaveInstanceState(savedInstanceState);
}onCreate,我是这样访问它的:
@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在这里是空的。
为什么是这样?
谢谢!
发布于 2015-08-22 18:41:55
当您测试这个时,整个Bundle是null还是只是查询字段?另外,你确定你一直在正确地测试状态恢复吗?为了触发被调用的onSaveInstanceState,您必须在设置中将“不要保持活动”设置为真,然后将应用程序/将其带回前台,或者旋转手机进行视图配置更改。
https://stackoverflow.com/questions/32159064
复制相似问题