这很奇怪,因为昨天这段代码可以工作,但今天不行。我很确定我没有改变任何东西。
问题是我一开始有一个空的 ArrayList。然后我调用另一个活动,该活动将为前一个活动提供一个我添加到 ArrayList 中的字符串。这个 ArrayList 的内容被用来填充一个 ListView。
问题是每次我启动新的 Activity 并返回一个新字符串时,我的 ArrayList 都是空的,所以我只在 ListView 上看到最后返回的字符串。
我尝试了一些关于 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);