您好我正在构建一个应用程序,我必须从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中的值填充字符串,如果有人能告诉我这是将字符串值从活动传递到片段的最佳方式,还是更好的存在? 提前谢谢。
答案 0 :(得分:0)
您应该将包设置为片段
fragment.setArguments(bundle)