2014-04-01 165 views
1

我有活动,我们称之为TestActivity。此TestActivity扩展了具有导航抽屉的活动。在TestActivity中,我想更改NavigationDrawerToggle并将其替换为向上箭头。扩展导航抽屉活动

public class Test extends DashboardActivity { 

    private DrawerLayout navDrawerLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     navDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

     getActionBar().setDisplayHomeAsUpEnabled(true); 

    } 

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

    @Override 
    public void onBackPressed() { 
     this.finish(); 
     super.onBackPressed(); 
    } 

} 

仪表盘活动是有点长,我有一些更多的东西有,但basicaly它遵循本教程:http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/

回答

1

我想你想要的是有一个Activity利用的ActionBarDrawerToggle,另一个仍然使用DrawerLayout,但没有切换。在这种情况下,最简单的方法就是拥有两个“基础”类。这是一个例子。

1)Activity实现了DrawerLayout

public class BaseDrawerActivity extends Activity { 

    protected DrawerLayout mDrawer; 

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

     mDrawer = ... 
    } 

} 

2)Activity实现了ActionBarDrawerToggle

public class BaseDrawerToggleActivity extends BaseDrawerActivity { 

    private ActionBarDrawerToggle mDrawerToggle; 

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

     mDrawerToggle = ... 
     mDrawer.setDrawerListener(mDrawerToggle); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (mDrawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

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

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

} 

当你想使用DrawerLayout切换,子类BaseDrawerActivity并且当您想要使用Activity切换时,子类BaseDrawerToggleActivity。因此,您的TestActivity看起来应该是这样的:

public class TestActivity extends BaseDrawerActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

} 
+0

谢谢,这就是我一直在寻找的东西。 –