[英]How can I pass two values to another fragment?
如何将两个值传递给另一个片段。 我正在传递一个参数( 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("keyName", "somevalue");
getStringExtra(String keyName)
或者,您可以将所有值组成一个对象,然后与意图一起发送。
i.putExtra((Parcelable) myParcelableObject);
or
i.putExtra((Serializable) myParcelableObject);
我们在谈论碎片或活动吗?
如果您想将数据传递给其他活动,则必须使用自己的意图并使用
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;
}
您必须像包裹一样声明您的对象
我希望这对您有帮助
在片段主要活动中创建变量,例如
String message;
假设消息值为“ frag”; 并从此活动的任何片段中使用它
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")
获得String 。
另一个建议是将您正在使用的键 "log"
设置为常量,而不是从购买的“活动”中访问它。 您可以将这样的字段添加到Activity类的 private static final String MAP_KEY = "log";
比在代码中可以使用它的多,因此在上面的代码中,您可以删除String key = "log";
行并用您的常数替换key
,因此两条意图行如下所示:
intent.putExtra("key", MAP_KEY);
intent.putExtra("value", map.get(MAP_KEY))
另一个建议是提取在putExtras中使用的bouth键作为公共常量,然后在要接收数据的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:也许有点令人困惑,我希望社区能够帮助改善这个答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.