2016-11-16 2 views
1

, also baue ich eine Struktur für meine neue App. Ich habe eine Swipe-Ansicht in Kombination mit einer Navigationsleiste und nicht viel Code-Erfahrung. Wenn ich meine App starten will, stürzt sie ab. Ich habe diesen Fehler:Neue App stürzt immer wieder

D/AndroidRuntime: Shutting down VM 
E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: de.lukas_schroederoutlook.connect, PID: 2357 
        java.lang.RuntimeException: Unable to start activity ComponentInfo{de.lukas_schroederoutlook.connect/de.lukas_schroederoutlook.connect.Overview_Screen}: java.lang.IllegalStateException: Already attached 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
         at android.app.ActivityThread.-wrap12(ActivityThread.java) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:154) 
         at android.app.ActivityThread.main(ActivityThread.java:6119) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
        Caused by: java.lang.IllegalStateException: Already attached 
         at android.support.v4.app.FragmentManagerImpl.attachController(FragmentManager.java:2137) 
         at android.support.v4.app.FragmentController.attachHost(FragmentController.java:104) 
         at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:317) 
         at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:88) 
         at de.lukas_schroederoutlook.connect.Overview_Screen.onCreate(Overview_Screen.java:78) 
         at android.app.Activity.performCreate(Activity.java:6679) 
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)  
         at android.app.ActivityThread.-wrap12(ActivityThread.java)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:154)  
         at android.app.ActivityThread.main(ActivityThread.java:6119)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  
Application terminated. 

Und das ist meine Haupttätigkeit:

import android.content.Intent; 
import android.content.res.Configuration; 
import android.support.design.widget.NavigationView; 
import android.support.design.widget.TabLayout; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 

import android.widget.TextView; 

public class Overview_Screen extends AppCompatActivity { 

    private ActionBarDrawerToggle setupDrawerToggle() { 
     return new ActionBarDrawerToggle(this, mDrawer, toolbar, R.string.drawer_open, R.string.drawer_close); 
    } 

    private SectionsPagerAdapter mSectionsPagerAdapter; 

    private ViewPager mViewPager; 

    private DrawerLayout mDrawer; 
    private Toolbar toolbar; 
    private NavigationView nvDrawer; 

    private ActionBarDrawerToggle drawerToggle; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_overview_screen); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 


     mViewPager = (ViewPager) findViewById(R.id.container); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(mViewPager); 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.drawer); 


     mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 


     nvDrawer = (NavigationView) findViewById(R.id.nvView); 

     setupDrawerContent(nvDrawer); 

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 


     mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawerToggle = setupDrawerToggle(); 


     mDrawer.addDrawerListener(drawerToggle); 


    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     getMenuInflater().inflate(R.menu.menu_overview_screen, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     int id = item.getItemId(); 


     if (id == R.id.action_settings) { 
      Intent settings_intent = new Intent(this, Settings_Screen.class); 
      startActivity(settings_intent); 
      return true; 
     } 

     switch (item.getItemId()) { 
      case android.R.id.home: 
       mDrawer.openDrawer(GravityCompat.START); 
       return true; 
     } 

     if (drawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 

    } 


    public static class PlaceholderFragment extends Fragment { 

     private static final String ARG_SECTION_NUMBER = "section_number"; 

     public PlaceholderFragment() { 
     } 


     public static PlaceholderFragment newInstance(int sectionNumber) { 
      PlaceholderFragment fragment = new PlaceholderFragment(); 
      Bundle args = new Bundle(); 
      args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
      fragment.setArguments(args); 
      return fragment; 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.fragment_overview_screen, container, false); 
      TextView textView = (TextView) rootView.findViewById(R.id.section_label); 
      textView.setText("replace with something useful"); 
      return rootView; 
     } 
    } 


    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

     public SectionsPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 

      return PlaceholderFragment.newInstance(position + 1); 
     } 

     @Override 
     public int getCount() { 

      return 3; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      switch (position) { 
       case 0: 
        return "SECTION 1"; 
       case 1: 
        return "SECTION 2"; 
       case 2: 
        return "SECTION 3"; 
      } 
      return null; 
     } 
    } 

    private void setupDrawerContent(NavigationView navigationView) { 
     navigationView.setNavigationItemSelectedListener(
       new NavigationView.OnNavigationItemSelectedListener() { 
        @Override 
        public boolean onNavigationItemSelected(MenuItem menuItem) { 
         selectDrawerItem(menuItem); 
         return true; 
        } 
       }); 
    } 

    public void selectDrawerItem(MenuItem menuItem) { 

     Fragment fragment = null; 
     Class fragmentClass; 
     switch(menuItem.getItemId()) { 
      case R.id.nav_first_fragment: 
       fragmentClass = FirstFragment.class; 
       break; 
      case R.id.nav_second_fragment: 
       fragmentClass = SecondFragment.class; 
       break; 
      case R.id.nav_third_fragment: 
       fragmentClass = ThirdFragment.class; 
       break; 
      default: 
       fragmentClass = FirstFragment.class; 
     } 

     try { 
      fragment = (Fragment) fragmentClass.newInstance(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 


     FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit(); 


     menuItem.setChecked(true); 

     setTitle(menuItem.getTitle()); 

     mDrawer.closeDrawers(); 
    } 

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

     drawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 

     drawerToggle.onConfigurationChanged(newConfig); 
    } 

    // ... 
} 

In Android Studio gibt es nichts unterstrichen oder so. Ich hoffe, dass mir jemand mit meinem Problem helfen kann.

+0

Was passiert, wenn Sie die Leitung 78 entfernen passiert: mDrawer.addDrawerListener (drawerToggle); – Luke

+0

stürzt immer noch ab –

Antwort

0

Ich sehe zwei Probleme in dir onCreate Methode. Das Hauptproblem ist, dass Sie die Superklasse zweimal für onCreate aufrufen. Auch Sie setzen die Unterstützung actionBar zweimal und setContent zweimal. Es sollte wie folgt aussehen:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_overview_screen); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

    mViewPager = (ViewPager) findViewById(R.id.container); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(mViewPager); 

    mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    nvDrawer = (NavigationView) findViewById(R.id.nvView); 
    setupDrawerContent(nvDrawer); 

    drawerToggle = setupDrawerToggle(); 
    mDrawer.addDrawerListener(drawerToggle); 
} 
+0

Ist es möglich, dass das Swipe-View-Fragment dieses Problem verursacht, da es 'leer' ist? –