Как отобразить данные, полученные из Облачного сообщения Firebase, на фрагменте в Android? - PullRequest
0 голосов
/ 19 октября 2018

Вот мой сервис FirebaseMessaging для получения сообщений с полезной нагрузкой.Я успешно смог получить сообщение.Но как мне использовать эти значения в другом фрагменте?У меня есть фрагмент карты, и я хотел бы построить координаты, полученные на карте.открытый класс MyFirebaseMessagingService extends FirebaseMessagingService {

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    Log.d("Message Received", "From: " + remoteMessage.getFrom());


    if (remoteMessage.getData().size() > 0) {
        Log.d("datapayload", "Message data payload: " + remoteMessage.getData());


        if (true) {
            // For long-running tasks (10 seconds or more) use Firebase Job Dispatcher.

        } else {

        }

    }
    if (remoteMessage.getNotification() != null) {
        Log.d("codefundonotification", "Message Notification Body: " + remoteMessage.getNotification().getBody());
    }


}

}

Фрагмент карты:

public class MapFragment extends Fragment implements OnMapReadyCallback {
@Override
public void onMapReady(GoogleMap googleMap){
    map=googleMap;

    LatLng point=new LatLng(12.925471,77.501349);
    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(point).title("India");
    map.addMarker(markerOptions);
    map.moveCamera(CameraUpdateFactory.newLatLng(point));
}

1 Ответ

0 голосов
/ 19 октября 2018

Вы должны открыть свою базовую активность. Вы можете передать некоторую дополнительную информацию с намерением сообщить вашей базовой активности, какой фрагмент должен быть открыт.

Intent mIntent = new Intent(getActivity(), MapActivity.class);
mIntent.putExtra("fragment", "MapFragment");
mIntent.putExtra("data", remoteMessage.getData());

В вашей MapActivity

@Override
protected void onCreate(Bundle savedInstanceState) {

    String fragment = getIntent().getStringExtra("fragment");
    String data = getIntent().getStringExtra("data");

    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    if (fragment != null && data!=null && fragment.equals("MapFragment")) {
            Bundle bundle = new Bundle();
            bundle.putString("data", data); //pass data through bundle

            MapFragment mapFragment = new MapFragment();
            mapFragment.setArguments(bundle);

            fragmentTransaction.replace(android.R.id.content, mapFragment);
    } 
    else{ 
         //open another fragment when the activity is not opened from notification
     }
}

На вашем фрагменте карты проверьте данные

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            String data = getArguments().getString("data");
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...