ActivityB - >服務類 - >填充的ListView在ActivityC(如下所示,並且沒有片段它)---> ActivityD如何在按下後退按鈕時恢復ListView並獲取List的內容?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);
setLocale(pref.getString("myLocale", null));
setTitle(R.string.title_activity_choose_number);
setContentView(R.layout.activity_choose_number1);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if(savedInstanceState != null) {
mobileNumbersList = savedInstanceState.getStringArrayList("mobileNumbers");
}
mobileNumbersList = getIntent().getStringArrayListExtra("mobileNumbers");
mobileNumberAdapter = new ArrayAdapter<String>(this,
R.layout.secnumsinglechoice,
mobileNumbersList);
numberListView = (ListView) findViewById(R.id.listViewNumberList);
numberListView.setAdapter(numberAdapter);
numberListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String numberChosen = numberAdapter.getItem(position);
Intent passNumberIntent = new Intent(getBaseContext(), US.class).
putExtra(Intent.EXTRA_TEXT, numberChosen);
startActivity(passNumberIntent);
}
});
}
現在,當返回按鈕被按下在ActivityD到ActivityC,我收到空指針錯誤。我知道原因,因爲這一次,我沒有通過ActivityD和ListView的意圖,適配器,數據都是空的。
所以當我搜索如何保存狀態,我遇到了saveInstanceState,onRestoreInstance和onSaveInstance。但我仍然無法解決這個問題。 ActivityC沒有片段。
saveInstanceState意味着從後臺返回時恢復活動數據,其不相關,如果向前或向後導航,您的活動需要以前活動的數據,您應該將其存儲在類字段中,並在嘗試讀取意圖數據之前檢查它是否已設置。 – Nanoc
/你的活動數據是什麼意思?這裏發生的問題是當我從ActivityD返回到ActivityC時,我失去了活動C數據。 類字段你的意思是像意圖???? – user3705478
類字段是直接在您的類中聲明的變量,將您的ActivityC數據存儲在ActivityC中的字段中,以便您可以根據需要恢復它。 – Nanoc