如何将两个值传递给另一个片段。我传递了一个参数(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");
答案 0 :(得分:2)
U可以以与发送/检索第一个参数
类似的方式发送一个参数intent.putExtra("keyName", "somevalue");
getStringExtra(String keyName)
或者您可以使用所有值组合一个对象并与意图一起发送。
i.putExtra((Parcelable) myParcelableObject);
or
i.putExtra((Serializable) myParcelableObject);
答案 1 :(得分: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 :(得分:0)
在片段主要活动中创建变量 喜欢
String message;
假设消息值为&#34; frag&#34 ;; 并从此活动的任何片段中使用它 喜欢
if(fragment_main_activity_name.message.equals("frag"))
{
}
享受快乐编码:)如果它有用,请将其设为正确:)
答案 3 :(得分: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")
即可获得 String 。
另一个建议是将您正在使用的键 "log"
设置为常量,而不是从已购买的活动中访问它。您可以将这样的字段添加到活动类 private static final String MAP_KEY = "log";
中,而不是在代码中使用它,因此在上面的代码中,您可以删除String key = "log";
行并替换你的常量key
,所以两条意图线看起来像这样:
intent.putExtra("key", MAP_KEY);
intent.putExtra("value", map.get(MAP_KEY))
另一个建议是将您在putExtras中使用的密钥作为公共常量提取,然后在您接收数据的Activity中使用这些密钥。像这样:
public static String KEY = "key";
public static String VALUE = "value";
然后在意图行中使用它。
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:也许它有点令人困惑,我希望社区可以帮助改善这个答案