Autore Topic: MapsActivity dentro fragment  (Letto 281 volte)

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
MapsActivity dentro fragment
« il: 22 Luglio 2016, 17:21:42 CEST »
0
Buon pomeriggio a tutti ragazzi, sto creando un applicazione dove all'interno di una ViewPager inserisco tanti fragment. Vorrei che all'interno di questa ViewPager possa inserire una MapsActivity. Di seguito il codice:

Codice (Java): [Seleziona]
package com.giupardeb.test;

import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.Toolbar;
import android.text.InputType;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends Fragment implements OnMapReadyCallback {

    private GoogleMap mMap;
    private FloatingActionButton fabBack, fabNext;

    public static MapsActivity newInstance() {
        return new MapsActivity();
    }


    // Inflate the view for the fragment based on layout XML
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_maps, container, false);
        SupportMapFragment mapFragment = ((SupportMapFragment) getChildFragmentManager()
                .findFragmentById(R.id.map));

        mapFragment.getMapAsync(this);
        fabBack = (FloatingActionButton) view.findViewById(R.id.fab_back);
        fabNext = (FloatingActionButton) view.findViewById(R.id.fab_next);

        fabBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d("fabBack", "BAAAACK!");

            }
        });

        fabNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d("fabNext", "NEEEEXT!");
            }
        });

        return view;
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(45.51787, 30.00715);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 20));
        googleMap.getUiSettings().setMapToolbarEnabled(false);

        mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng point) {

                mMap.clear();

                MarkerOptions marker = new MarkerOptions().position(
                        new LatLng(point.latitude, point.longitude)).title("New Marker");

                mMap.addMarker(marker);

                Log.d("position", marker.getPosition().toString());
            }
        });
    }
}

lanciando l'applicazione, nel momento in cui si deve lanciare la nuova istanza della maps Activity, mi da errore su questa istruzione
Codice (Java): [Seleziona]
 mapFragment.getMapAsync(this);
di seguito l'errore riportato:

Codice: [Seleziona]
07-22 17:12:08.418 318-318/com.giupardeb.test E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: com.giupardeb.test, PID: 318
                                                                        java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.FloatingActionButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                                                                            at com.giupardeb.test.MapsActivity.onCreateView(MapsActivity.java:46)
                                                                            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
                                                                            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
                                                                            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
                                                                            at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
                                                                            at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:164)
                                                                            at android.support.v4.view.ViewPager.populate(ViewPager.java:1177)
                                                                            at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:608)
                                                                            at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:570)
                                                                            at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:551)
                                                                            at com.giupardeb.test.MainActivity$1.onClick(MainActivity.java:56)
                                                                            at android.view.View.performClick(View.java:5697)
                                                                            at android.view.View$PerformClick.run(View.java:22526)
                                                                            at android.os.Handler.handleCallback(Handler.java:739)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                            at android.os.Looper.loop(Looper.java:158)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:7225)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

come posso risolvere? A che cosa è dovuto l'errore?

Grazie mille anticipatamente e buona giornata :)