2017-05-26 4 views
0

Was ist falsch an meinem Code? Ich versuche eine Karte in einem Fragment anzuzeigen (Drücken der Taste der Navigationsleiste) .. aber die App stürzt ab, anstatt sie zu laden. Android Studio zeigt keine Fehler an ... und die App funktioniert, aber wenn ich auf die Schaltfläche "Galerie" im Menü Navigationsleiste klicke, sollte die Karte angezeigt werden, aber die App stürzt ab. Dies ist der Code der Haupttätigkeit ...Karte in einem Fragment der Navigationsschublade

public class MainActivity extends AppCompatActivity 
implements NavigationView.OnNavigationItemSelectedListener, OnMapReadyCallback { 


    SupportMapFragment sMapFragment; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     sMapFragment = SupportMapFragment.newInstance(); 

     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
      } 
     }); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 

     android.app.FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit(); 

     sMapFragment.getMapAsync(this); 

    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 

     android.app.FragmentManager fn = getFragmentManager(); 
     android.support.v4.app.FragmentManager sFm = getSupportFragmentManager(); 
     int id = item.getItemId(); 

     if (sMapFragment.isAdded()) 
      sFm.beginTransaction().hide(sMapFragment).commit(); 

     if (id == R.id.nav_camera) { 
      fn.beginTransaction().replace(R.id.content_frame, new ImportFragment()).commit(); 

     } else if (id == R.id.nav_gallery) { 
      if (!sMapFragment.isAdded()) 
       sFm.beginTransaction().add(R.id.map, sMapFragment).commit(); 
      else 
       sFm.beginTransaction().show(sMapFragment).commit(); 

     } else if (id == R.id.nav_slideshow) { 

     } else if (id == R.id.nav_manage) { 

     } else if (id == R.id.nav_share) { 

     } else if (id == R.id.nav_send) { 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 

    } 
} 
+1

Nun, das ist, weil Sie einen Fehler in Ihrem Code haben. Für weitere Informationen zeigen Sie logcat an. – DEADMC

Antwort

0

in Ihrem onCreate Methodenaufruf für mapFragment.getMapAsync(this); für detailliertere Anweisung here aussehen.

Verwandte Themen