如何将两个值传递给另一个片段?
如何将两个值传递给另一个片段。我传递一个参数(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");
,我们谈论的片段或活动?
,如果你想将数据传递给其他活动,你必须使用意图和你一样使用
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
我希望这将帮助你
U可以在您发送类似的方式发送一个参数/检索的第一个参数
intent.putExtra("keyName", "somevalue");
getStringExtra(String keyName)
,或者你可以用所有的值组成的对象和发送以及意图。
i.putExtra((Parcelable) myParcelableObject);
or
i.putExtra((Serializable) myParcelableObject);
创建像
String message;
假设消息值在片段主要活动 一个变量为 “断枝”; 并用它从这个活动 的任何片段像
if(fragment_main_activity_name.message.equals("frag"))
{
}
享受快乐编码:)请说是正确的,如果它有帮助:)
你可以做这样的事情。
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) –
在你的代码中你正在开始新的活动你想要传递数据到片段或活动 –