package com.example.activity; import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.widget.SlidingPaneLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.view.ViewTreeObserver; import com.example.R; import com.example.fragment.DetailFragment; import com.example.fragment.ListingFragment; public class ExampleActivity extends AppCompatActivity { private SlidingPaneLayout mSlidingPaneLayout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_example); setupActionBar(); setupSlidingPane(savedInstanceState); } @Override public boolean onOptionsItemSelected(MenuItem item) { // action bar menu behavior switch(item.getItemId()) { case android.R.id.home: if(!mSlidingPaneLayout.isOpen()) { mSlidingPaneLayout.openPane(); return true; } default: return super.onOptionsItemSelected(item); } } private void setupActionBar() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ActionBar bar = getSupportActionBar(); bar.setDisplayUseLogoEnabled(false); bar.setDisplayShowTitleEnabled(true); bar.setDisplayShowHomeEnabled(true); bar.setDisplayHomeAsUpEnabled(false); bar.setHomeButtonEnabled(false); } private void setupSlidingPane(Bundle savedInstanceState) { // reference mSlidingPaneLayout = (SlidingPaneLayout) findViewById(R.id.activity_example_sliding_pane_layout); // set slide listener mSlidingPaneLayout.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() { @Override public void onPanelSlide(View view, float v) { } @Override public void onPanelOpened(View view) { onSlidingPaneOpened(); } @Override public void onPanelClosed(View view) { onSlidingPaneClosed(); } }); mSlidingPaneLayout.openPane(); // set global layout listener mSlidingPaneLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if(mSlidingPaneLayout.isSlideable() && !mSlidingPaneLayout.isOpen()) { onSlidingPaneClosed(); } else { onSlidingPaneOpened(); } if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { mSlidingPaneLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); } else { mSlidingPaneLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); } } }); // add fragments if(savedInstanceState == null) { FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(R.id.activity_example_sliding_pane_left, ListingFragment.newInstance()).commitAllowingStateLoss(); fragmentManager.beginTransaction().replace(R.id.activity_example_sliding_pane_right, DetailFragment.newInstance()).commitAllowingStateLoss(); } } private void onSlidingPaneOpened() { Fragment fragmentLeft = getSupportFragmentManager().findFragmentById(R.id.activity_example_sliding_pane_left); Fragment fragmentRight = getSupportFragmentManager().findFragmentById(R.id.activity_example_sliding_pane_right); if(mSlidingPaneLayout.isSlideable()) { if(fragmentLeft != null) fragmentLeft.setHasOptionsMenu(true); if(fragmentRight != null) fragmentRight.setHasOptionsMenu(false); } else { if(fragmentLeft != null) fragmentLeft.setHasOptionsMenu(false); if(fragmentRight != null) fragmentRight.setHasOptionsMenu(true); } ActionBar bar = getSupportActionBar(); bar.setDisplayHomeAsUpEnabled(false); bar.setHomeButtonEnabled(false); } private void onSlidingPaneClosed() { Fragment fragmentLeft = getSupportFragmentManager().findFragmentById(R.id.activity_example_sliding_pane_left); Fragment fragmentRight = getSupportFragmentManager().findFragmentById(R.id.activity_example_sliding_pane_right); if(fragmentLeft != null) fragmentLeft.setHasOptionsMenu(false); if(fragmentRight != null) fragmentRight.setHasOptionsMenu(true); ActionBar bar = getSupportActionBar(); bar.setDisplayHomeAsUpEnabled(true); bar.setHomeButtonEnabled(true); } }