我一直在按照本教程创建滑动菜单:
http://www.youtube.com/watch?v=LWTYQ2g597o
而且因为我使用的是 Sherlock,所以我不得不改变我的类声明:
public class BaseActivity extends SlidingFragmentActivity
到以下:
public class RggarbActionBar extends SherlockFragmentActivity implements SlidingActivityBase
现在,每当我使用 getSlidingMenu() 方法时,我都会收到 NullPointerException,该方法在我的类中保持为空并返回 null。
这是我的全班:
public class RggarbActionBar extends SherlockFragmentActivity implements SlidingActivityBase {
protected ListFragment listFragment;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
listFragment = new RggarbSlidingMenu();
SlidingMenu slidingMenu = getSlidingMenu();
slidingMenu.setShadowWidth(15);//outsource these
slidingMenu.setBehindOffset(60);
slidingMenu.setFadeDegree(0.35f);
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
MenuInflater inflater = getSupportMenuInflater();
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
ActionBar actionBar = getSherlock().getActionBar();
actionBar.setBackgroundDrawable(new
ColorDrawable(Color.parseColor("#680e96")));
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setHomeButtonEnabled(true);
actionBar.setIcon(R.drawable.logo_icon);
inflater.inflate(R.menu.action_bar_items, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if(itemId == android.R.id.home) {
toggle();
return true;
}
else if (itemId == R.id.abFeed) {
Intent feed = new Intent(this, Home.class);
startActivity(feed);
return true;
} else if (itemId == R.id.abNotifications) {
Intent notifications = new Intent(this, Notifications.class);
startActivity(notifications);
return true;
} else if (itemId == R.id.abAddNewItem) {
Intent addNewItem = new Intent(this, ItemAdd.class);
startActivity(addNewItem);
return true;
} else if (itemId == R.id.abSearch) {
Intent search = new Intent(this, SearchItems.class);
startActivity(search);
return true;
} else {
return onOptionsItemSelected(item); //watch out for this one. if any problems occur change to "return true"
}
}
public class BasePagerAdapter extends FragmentPagerAdapter{
private List<Fragment> mFragments = new ArrayList<Fragment>();
private ViewPager mPager;
public BasePagerAdapter(FragmentManager fm, ViewPager vp){
super(fm);
mPager = vp;
mPager.setAdapter(this);
for (int i = 0; i < 3; i++){
addTab(new RggarbSlidingMenu());
}
}
public void addTab(Fragment frag){
mFragments.add(frag);
}
@Override
public Fragment getItem(int position){
return mFragments.get(position);
}
@Override
public int getCount(){
return mFragments.size();
}
}
@Override
public void setBehindContentView(View view, LayoutParams layoutParams) {
// TODO Auto-generated method stub
}
@Override
public void setBehindContentView(View view) {
// TODO Auto-generated method stub
}
@Override
public void setBehindContentView(int layoutResID) {
// TODO Auto-generated method stub
}
@Override
public SlidingMenu getSlidingMenu() {
// TODO Auto-generated method stub
return null;
}
@Override
public void toggle() {
// TODO Auto-generated method stub
}
@Override
public void showContent() {
// TODO Auto-generated method stub
}
@Override
public void showMenu() {
// TODO Auto-generated method stub
}
@Override
public void showSecondaryMenu() {
// TODO Auto-generated method stub
}
@Override
public void setSlidingActionBarEnabled(boolean slidingActionBarEnabled) {
// TODO Auto-generated method stub
}
}