我正在尝试使用导航抽屉,我已经按照官方开发者网站的每一步,仍然有两个问题:
- DrawerToggle,当按下时,什么都不做
- ListView在抽屉里的item没有收到点击事件
其他一切都有效(甚至是打开/关闭侦听器)。你能帮我找出错误吗?
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.widget.DrawerLayout;
public class ActTimerList extends FragmentActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_timer_list);
---
configureActionBarAndNavigationDrawer();
retrieveStuff();
}
private void configureActionBarAndNavigationDrawer(){
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.drawer_list);
mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
//Some code that works
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
}
};
// Set the drawer toggle as the DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerList.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Log.d("Drawer", "Stuff clicked: " + position);
mDrawerList.setItemChecked(position, true);
getActionBar().setTitle(stuff[position].name);
mDrawerLayout.closeDrawer(mDrawerList);
}
});
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Pass the event to ActionBarDrawerToggle, if it returns
// true, then it has handled the app icon touch event
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle your other action bar items...
return super.onOptionsItemSelected(item);
}
private void retrieveStuff() {
query.findInBackground(new FindCallback<ParseObject>() { //Parse API to retrieve stuff, async
public void done(List<ParseObject> stuffList, ParseException e) { //Callback for when the query completes
if (e == null) {
//This works, stuff is being loaded and the adapter is set correctly
mDrawerList.setAdapter(new StuffAdapter(context,
R.layout.item_stuff, stuff));
---
}
}
});
}