将一个集合传递给另一个集合的最佳方式是什么 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");
我有一个包含字符串列表的集合:
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");