2016-12-24 2 views
0

Ich versuche, einen Tab auf meiner App, erstellt von Grund auf mit dem Navigationsschublade Vorlage mit Android Studio, aber ich arbeite nicht die Umschaltfläche in Tab.class, um die Schublade zu öffnen, wie bekomme ich es?Button Toggle nicht öffnen Schublade

MainActivity.class

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     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); 
    } 

    @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) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_camera) { 
      // Handle the camera action 
     } else if (id == R.id.nav_gallery) { 

      startActivity(new Intent(this, TabActualJ.class)); 

     } 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; 
    } 
} 

Mein Tab.class

public class TabActualJ extends AppCompatActivity { 

    private SectionsPagerAdapter mSectionsPagerAdapter; 

    private ViewPager mViewPager; 
    DrawerLayout mDrawerLayout; 

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

      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); 
      Toolbar tb = (Toolbar) findViewById(R.id.toolbar); 
      setSupportActionBar(tb); 
      ActionBar ab = getSupportActionBar(); 
      ab.setHomeAsUpIndicator(drawer_toggle); 
      ab.setDisplayHomeAsUpEnabled(true); 
     } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     switch (item.getItemId()) { 
      case android.R.id.home: 
       mDrawerLayout.openDrawer(GravityCompat.START); 
       final InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(getWindow().getDecorView().getRootView().getWindowToken(), 0); 

     } 
     return super.onOptionsItemSelected(item); 
    } 

     @Override public boolean onCreateOptionsMenu (Menu menu){ 

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

     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_tab_actual_j, container, false); 
       TextView textView = (TextView) rootView.findViewById(R.id.section_label); 
       textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER))); 
       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; 

     } 
    } 
} 

activity_tab.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="@dimen/appbar_padding_top" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/AppTheme.PopupOverlay"> 

    </android.support.v7.widget.Toolbar> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</android.support.design.widget.AppBarLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="end|bottom" 
    android:layout_margin="@dimen/fab_margin" 
    app:srcCompat="@android:drawable/ic_dialog_email" /> 

Antwort

2

Das Problem ist, dass Sie die Anwendung nicht gefragt haben, etwas nach innen zu tun MainActivity onOptionsItemSelected

Ein Beispiel wäre:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      pDrawerLayout.openDrawer(GravityCompat.START); 
      final InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(getWindow().getDecorView().getRootView().getWindowToken(), 0); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

Edit:

DrawerLayout Erstellen Sie eine globale Deklaration wie private DrawerLayout drawer; und es dann in Ihrem onCreate() initialisieren einmal so, wenn Sie drawer.openDrawers(..) tun, werden Sie nicht finden müssen neue Instanz der DrawerLayout von Ihrem Layout.

+0

Dies bringt mich zur MainActivity zurück, aber es öffnet die Schublade nicht. –

+0

wo in Ihrem DrawerLayout in Ihrem Code? –

+0

Beitrag 1 bearbeitet, MainActivity.class –