你可以做这样的事情。
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getActivity().getApplicationContext(), ViewMyCommande.class);
HashMap<String, String> map = (HashMap) parent.getItemAtPosition(position);
String key = "log";
intent.putExtra("key", key);
intent.putExtra("value", map.get(key))
startActivity(intent);
}
PS:在你的代码有这样一个String tid = map.get("log").toString();
行地图已经是一个<String, String>
地图,没有必要调用Object::toString
它。只需拨打String tid = map.get("log")
即可获得字符串。
另一个建议是将此键"log"
设置为常数,而不是从购买的活动中访问它。你可以在你的代码中添加一个像这样的字段到你的活动类private static final String MAP_KEY = "log";
中,所以在上面的代码中,你可以删除String key = "log";
行并用你的常量替换,所以这两个intent行看起来像这样的:
intent.putExtra("key", MAP_KEY);
intent.putExtra("value", map.get(MAP_KEY))
另一个建议是提取您使用的是putExtras公共常量的bouth键,然后在您收到的数据的活动中使用这些。类似这样的:
public static String KEY = "key";
public static String VALUE = "value";
然后在intent行中使用它。
intent.putExtra(KEY, MAP_KEY);
intent.putExtra(VALUE, map.get(MAP_KEY))
当你SecondActivity你可以得到这些值作为getArguments().getString(FirstActivity.KEY);
相同的值。
另一种观察,如果你的钥匙将是恒定的,你并不需要发送钥匙到你的SecondActivity。
如果你需要所有这些地图SecondActivity你可以打电话putExtra
并把它放在地图中。然后在SecondActivity你需要哟呼HashMap<String, String> firstActivityMap = (HashMap<String, String>) getSerializable(MAP)
OBS:也许这是一个有点混乱,我希望社会能帮助改善这个答案
简而言之另一个额外的! 'intent.putExtra(“log2”,position);'并用'int position = getArguments()。getInt(“log2);' – NSimon
检索它可能的重复[如何在片段之间传递数据](http:// stackoverflow .com/questions/5194548/how-to-pass-data-between-fragments) –
在你的代码中你正在开始新的活动你想要传递数据到片段或活动 –