如何将值从Bundle添加到String?

时间:2016-08-09 08:27:56

标签: android android-fragments android-location

您好我正在构建一个应用程序,我必须从MainActivity向DashboardFragment发送纬度和经度。那个纬度和经度是字符串,但我无法将它们传递给片段,因为它们是空的。我已尝试使用Bundle,这没关系,但现在我无法将Bundle值转换为Strings。我的想法是用Bundle值填充全局字符串纬度和经度,然后在我的方法getObjectEvent中使用它们(我需要经度和经度来发送上游消息)。 这是我在Main活动中发送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);}

这是我的Dashboard片段:

    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中的值填充字符串,如果有人能告诉我这是将字符串值从活动传递到片段的最佳方式,还是更好的存在? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您应该将包设置为片段

fragment.setArguments(bundle)