2016-08-09 4 views
-2

Привет, я создаю приложение, где я должен отправить широту и долготу от MainActivity до DashboardFragment. Эта широта и долгота - это строки, но я не могу передать их фрагменту, потому что там они равны нулю. Я пробовал с Bundle, и все в порядке, но теперь я не могу преобразовать значения Bundle в строки. Моя идея состоит в том, чтобы заполнить широту широты и долготу Strings с этими значениями Bundle, а затем просто использовать их в моем методе getObjectEvent (в котором мне нужна широта и долгота для отправки восходящего сообщения). Это мой метод для отправки лат и долго в Основной вид деятельности:Как добавить значения из Bundle в String?

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"); 

они оба равны нулю. И мой вопрос заключается в том, как заполнить строки значениями из пакета, и если кто-нибудь скажет мне, что это лучший способ передать строковые значения из активности в фрагмент или что-то лучше существует? Спасибо заранее.

+1

Вы можете убедиться, что у вас есть значения для '' lat' и lot'? Кроме того, попробуйте 'getArguments(). GetString()' вместо 'bundle', может что-то изменить, но я сомневаюсь. – Vucko

+0

Да, у меня есть значения для lat и log (Mozes i na srpskom zemljak: D) – Atenica

+0

Мы могли бы, если бы я знал, как начать чат (я только видел кнопку чата, когда уже есть 7-8 комментариев): D – Vucko

ответ

0

вы должны установить пакет фрагмент

fragment.setArguments(bundle) 
+1

Эта же строка буквально находится в коде. – Vucko

+0

Моя ошибка. try getArguments(). getString() в DashboardFragment's onCreateView() – FrankOy

+0

Нет, он выбрасывает нулевой указатель – Atenica