2016-05-13 103 views
0

如何將兩個值傳遞給另一個片段。我傳遞一個參數(log)。現在我想添加另一個參數「id」。如何將兩個值傳遞給另一個片段?

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 tid = map.get("log").toString(); 
     intent.putExtra("log", tid); 
     startActivity(intent); 
    } 

我檢索它的價值是這樣的:

String log = getArguments().getString("log"); 
+5

簡而言之另一個額外的! 'intent.putExtra(「log2」,position);'並用'int position = getArguments()。getInt(「log2);' – NSimon

+1

檢索它可能的重複[如何在片段之間傳遞數據](http:// stackoverflow .com/questions/5194548/how-to-pass-data-between-fragments) –

+0

在你的代碼中你正在開始新的活動你想要傳遞數據到片段或活動 –

回答

0

,我們談論的片段或活動?

,如果你想將數據傳遞給其他活動,你必須使用意圖和你一樣使用

intent.putExtra("key", data); 

爲將要傳遞

,如果你想將數據傳遞給片段,您可以使用新的每個數據比如在你的片段類

public static MyFragment newInstance() { 

    Bundle args = new Bundle(); 

    MyFragment fragment = new MyFragment(); 
    args.putParcelable("key",data); 
    fragment.setArguments(args); 
    return fragment; 
} 

您必須聲明你的對象等作爲parcelable

我希望這將幫助你

2

U可以在您發送類似的方式發送一個參數/檢索的第一個參數

intent.putExtra("keyName", "somevalue"); 
getStringExtra(String keyName) 

,或者你可以用所有的值組成的對象和發送以及意圖。

i.putExtra((Parcelable) myParcelableObject); 
or 
i.putExtra((Serializable) myParcelableObject); 
0

創建像

String message; 

假設消息值在片段主要活動 一個變量爲 「斷枝」; 並用它從這個活動 的任何片段像

if(fragment_main_activity_name.message.equals("frag")) 
    { 

    } 

享受快樂編碼:)請說是正確的,如果它有幫助:)

0

你可以做這樣的事情。

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:也許這是一個有點混亂,我希望社會能幫助改善這個答案

相關問題