将一个集合传递给另一个集合的最佳方式是什么 activity。 Java Android SDK

What is the best way to pass a set to another activity. Java Android SDK

我有一个包含字符串列表的集合:

public  Set<String> favs = new HashSet<>();

然而,当我开始另一个 activity 'Favorites' 时,我想将此列表传递给我的 'Favorties' class,目前我有:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();


    if (id == R.id.action_settings) {
        return true;
    } else if (id == R.id.exit_the_app) {
        finish();
        return true;
    } else if (id == R.id.favorites) {
        Intent startfavs = (new Intent(Insulter.this, Favorites.class));
        startActivity(startfavs);
        return true;
        }
return super.onOptionsItemSelected(item);
}

我想在'favorites'中传递这个集合,最终将它改成列表后显示在列表视图中。执行此操作的最佳方法是什么?

(注:我的第二个activity在流形中全部设置好,运行良好)

在你的第一个 Activity 调用 Insulter 中,添加这个,

Intent startfavs = (new Intent(Insulter.this, Favorites.class));
String[] objects = new String[set.size()];
set.toArray(objects);
final ArrayList<String> list = new ArrayList<String>(Arrays.asList(objects));
startfavs.putStringArrayListExtra("favs",list);
startActivity(startfavs);

在你的第二个 Activity 调用 Favorites 中,获取参数,

ArrayList<String> favs = getIntent().getStringArrayListExtra("favs");

可以在使用意图启动另一个 activity 之前将额外数据放入意图中。 Intent class 提供了 putExtra() 方法来将额外的数据放入其中。

putExtra() 方法有几个重载,因为您专门询问有关传递 Set 的问题,这个可能是最相关的:

public Intent putExtra (String name, Serializable value)

有关更多详细信息,请查看:putExtra(String name, Serializable value)

由于您使用的是 HashSet,因此按原样传递 favs 对象应该可以正常工作,因为 HashSet 实现了 Serializable。

因此您的代码将如下所示:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();


    if (id == R.id.action_settings) {
        return true;
    } else if (id == R.id.exit_the_app) {
        finish();
        return true;
    } else if (id == R.id.favorites) {
        Intent startfavs = (new Intent(Insulter.this, Favorites.class));
        startfavs.putExtra("favs_set", favs);
        startActivity(startfavs);
        return true;
        }
return super.onOptionsItemSelected(item);
}

不要忘记您还必须检索此数据,因此在您的 Favorites activity 中,在 onCreate() 方法中,您通过使用

检索此数据

public Serializable getSerializableExtra (String name)

相关代码看起来像这样:

getExtras().getSerializableExtra("favs_set");