我有一个包含字符串列表的集合:
public Set<String> favs = new HashSet<>();
然而,当我开始另一项活动时,收藏夹&#39;我想把这个清单传递给我的Favorties&#39;上课,目前我有:
@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);
}
我想在“收藏夹”中传递此内容。并最终在将其更改为列表后将其显示在列表视图中。这样做的最佳方式是什么?
(注意:我的第二个活动都是在歧管中设置并运行良好)
答案 0 :(得分:1)
在名为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);
在第二个名为“收藏夹”的活动中,要获取参数,
ArrayList<String> favs = getIntent().getStringArrayListExtra("favs");
答案 1 :(得分:0)
在使用它们开始另一个活动之前,可以在意图中添加额外的数据。 Intent类提供了putExtra()方法,可以在其中添加额外的数据。
putExtra()方法有几个重载,因为你具体要求传递一个Set,这个可能是最相关的:
public Intent putExtra (String name, Serializable value)
有关详细信息,请查看以下内容:putExtra(String name, Serializable value)
由于您正在使用HashSet,因此favs
实现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
请勿忘记您还必须检索此数据,因此在onCreate()
活动中,使用
public Serializable getSerializableExtra (String name)
方法
getExtras().getSerializableExtra("favs_set");
相关的代码片段如下所示:
Office.initialize = function (reason) {
$(document).ready(function () {
displayItemDetails();
});
};