你可以做這樣的事情。
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) –
在你的代碼中你正在開始新的活動你想要傳遞數據到片段或活動 –