如何将 Bundle 中的值添加到 String?

Posted

技术标签:

【中文标题】如何将 Bundle 中的值添加到 String?【英文标题】:How to add values from Bundle to String? 【发布时间】:2016-12-15 04:46:17 【问题描述】:

您好,我正在构建一个应用程序,我必须将经纬度从 MainActivity 发送到 DashboardFragment。纬度和经度是字符串,但我不能将它们传递给片段,因为它们是空的。我已经尝试过使用 Bundle,这没关系,但现在我无法将该 Bundle 值转换为字符串。我的想法是用该 Bundle 值填充全局字符串纬度和经度,然后在我的方法 getObjectEvent 中使用它们(我需要纬度和经度来发送上游消息)。 这是我在主要活动中发送 lat 和 long 的方法:

 private void getLatLong()
            if(null!=mCurrentLocation) 

                String lat = String.valueOf(mCurrentLocation.getLatitude());
                String lot = String.valueOf(mCurrentLocation.getLongitude());
                Bundle bundle=new Bundle();
                bundle.putString("KEY_LAT", lat);
                bundle.putString("KEY_LNG", lot);
                DashboardFragment fragment = DashboardFragment.newInstance(bundle);

这是我的仪表板片段:

    public class DashboardFragment extends Fragment 

    RelativeLayout relativeLayout;


    Context mContext;
    static Bundle goran;
    static String latitude, longitude;


    public DashboardFragment() 
    


 public void passData(Context context, AccountModel  model) 
        mContext = context;
        accountModel = model;
    


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
        View view = inflater.inflate(R.layout.fragment_dashboard, container, false);
        ButterKnife.inject(this, view);





        initDashboard(view);

        return view;
    


    public void getObjectEvent(EventModel data)

        Gson data_json = new Gson();
        String json=data_json.toJson(data);
        FirebaseMessaging fm=FirebaseMessaging.getInstance();
        fm.send(new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com")
                .setMessageId(UUID.randomUUID().toString())
                .addData("action","message")
                .addData("data","\"message\":\"Upstream Message\"")
                .addData("object", json)
               .build());



    
public static DashboardFragment newInstance(Bundle bundle) 
    DashboardFragment fragment = new DashboardFragment ();
    fragment.setArguments(bundle);
    latitude= bundle.getString("KEY_LAT");
    longitude=bundle.getSTring("KEY_LNG");
    return fragment;

当我在 Dashboard 片段中写这部分时:

 latitude= bundle.getString("KEY_LAT");
    longitude=bundle.getSTring("KEY_LNG");

它们都是空的。 我的问题是如何用 bundle 中的值填充字符串,如果有人能告诉我这是将字符串值从活动传递到片段的最佳方式,还是存在更好的方法? 提前致谢。

【问题讨论】:

您能否验证您是否拥有latlot 的值?另外,尝试getArguments().getString() 而不是bundle,可能会有所改变,但我对此表示怀疑。 是的,我有 lat 和 log 的值(Mozes i na srpskom zemljak :D) 如果我知道如何开始聊天,我们可以(我只看到聊天按钮已经有 7-8 个 cmets):D 我应该把那部分 getArguments().getString 放在哪里? 可能不会改变任何东西...尝试在newInstance方法中传递两个字符串并将它们作为参数放入新的Bundle中。那一定行得通。 【参考方案1】:

您应该将捆绑包设置为片段

fragment.setArguments(bundle)

【讨论】:

我的错误。在 DashboardFragment 的 onCreateView() 中尝试 getArguments().getString()

以上是关于如何将 Bundle 中的值添加到 String?的主要内容,如果未能解决你的问题,请参考以下文章

Sonata Admin Bundle:如何将表单中的“删除”按钮添加到嵌套实体列表中的实体?

如何将 Console.ReadLine 中的值添加到数组中?

如何使用来自 Arraylist<Hashmap<String,String>> 的 bundle 获取使用 putserializable 传递的值

Java:如何保存SET 作为HashMap中的值?

将 fixup_bundle 结果添加到 CPack

如何将 Hashmap 中的值转换为 List<String>