2
這很奇怪,因爲昨天這段代碼正在工作,但不是今天。我很確定我沒有改變任何東西。ArrayList從另一個活動回來後變得清晰
事情是,我有一個空的ArrayList在第一次。然後我打電話給另一個活動,這個活動將支持前一個活動,並將一個String添加到ArrayList中。這個ArrayList的內容被用來填充一個ListView。
問題是我每次啓動新的Activity並返回一個新的String時,我的ArrayList都是空的,所以我只看到ListView上返回的最後一個String。
我嘗試了一些關於onSaveInstanceState,但它沒有幫助。有任何想法嗎?謝謝。
ArrayList<String> rules = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_filters);
myList = (ListView) findViewById(R.id.listFilters);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, rules);
myList.setAdapter(adapter);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == REQUEST_CODE_0 && resultCode == RESULT_OK){
String aux = data.getExtras().getString(S.RULE);
rules.add(aux);
// here rules.size() is always 1
adapter.notifyDataSetChanged();
}
}
編輯: 我請從一個簡單方法的其他活動,此代碼
Intent i = new Intent(this, ActivityAddRule.class);
startActivityForResult(i, S.REQUEST_CODE_0);
我從第二活動從另一個方法返回數據是這樣的:
Intent i = new Intent();
String rule = someOperations();
i.putExtra(S.RULE, rule);
setResult(RESULT_OK, i);
您可以顯示您調用其他活動的代碼部分,以及從第二個活動返回數據的位置嗎? – Neoh
此代碼沒問題,但請向我展示開始第二個活動的代碼。我認爲你在完成當前活動時啓動第二個活動,這就是爲什麼列表onCreate()被調用並且列表大小始終爲1 –
從我的猜測來看,返回結果不一定是調用的。你確定它在第二個活動開始時必須返回一個非空字符串嗎? – Neoh