繁体   English   中英

如何将两个值传递给另一个片段?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM