2016-05-13 76 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:也许这是一个有点混乱,我希望社会能帮助改善这个答案

相关问题