从另一个活动返回后,ArrayList变得清晰

时间:2013-06-20 16:40:11

标签: android listview arraylist android-activity android-arrayadapter

这很奇怪,因为昨天这段代码工作但今天没有。我很确定我没有改变任何东西。

首先,我有一个空的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);

1 个答案:

答案 0 :(得分:0)

您的代码看起来不错。确保在第二个活动开始时始终调用setResult(RESULT_OK, i)