使用slidemenu:向后滑动和填充不起作用

时间:2013-03-19 20:55:14

标签: android slidingmenu

我在我的应用中使用以下库作为我的滑动菜单(https://github.com/bk138/LibSlideMenu)。

在我的应用程序中,滑动菜单有效。我可以从右向左滑动,菜单会出现。但问题是,当我在菜单中时,我不能滑回到我来自的片段。 回来的唯一方法是使用后退按钮。此外,当您在菜单中时,我在右侧没有填充,您可以在背景上看到上一个片段。

我正在寻找它像天。我已经搜索了这个问题的例子,但找不到我忘记的重要事情。

我的主要活动:

public class MainActivity extends SlidingFragmentActivity {

private Fragment rFrag;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setBehindContentView(R.layout.menu_frame);

    if (savedInstanceState != null)
        rFrag = getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
    if (rFrag == null)
        rFrag = new RecentGridFragment();   

    FragmentTransaction fragment = getSupportFragmentManager().beginTransaction();

    fragment.replace(R.id.content_frame, rFrag);

    MenuFragment mFrag = new MenuFragment();
    fragment.replace(R.id.menu_frame, mFrag);
    fragment.commit();

    //Sliding menu
    SlidingMenu sMenu = new SlidingMenu(this);
    sMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sMenu.setShadowWidthRes(R.dimen.shadow_width);
    sMenu.setShadowDrawable(R.drawable.shadow);
    sMenu.setBehindScrollScale(0.25f);
    sMenu.setFadeDegree(0.25f);
    sMenu.setSlidingEnabled(true);
    sMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);


    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    return super.onCreateOptionsMenu(menu);
}
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    getSupportFragmentManager().putFragment(outState, "mContent", rFrag);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        toggle();
    }
    return super.onOptionsItemSelected(item);
}
public void switchContent(final Fragment inputFrag) {
    rFrag = inputFrag;
    FragmentTransaction fragment = getSupportFragmentManager().beginTransaction();
    fragment.replace(R.id.content_frame, inputFrag);
    fragment.commit();
    Handler h = new Handler();
    h.postDelayed(new Runnable() {
        public void run() {
            getSlidingMenu().showContent();
        }
    }, 50);
}}

菜单:

public class MenuFragment extends ListFragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.list, null);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    String[] birds = getResources().getStringArray(R.array.birds);
    ArrayAdapter<String> colorAdapter = new ArrayAdapter<String>(getActivity(), 
            android.R.layout.simple_list_item_1, android.R.id.text1, birds);
    setListAdapter(colorAdapter);
}}

包含内容的主片段

public class RecentGridFragment extends Fragment {

private int mImgRes;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mImgRes = R.drawable.peacock;

    GridView gv = (GridView) inflater.inflate(R.layout.list_grid, null);
    gv.setBackgroundResource(android.R.color.black);
    gv.setAdapter(new GridAdapter());
    return gv;
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

private class GridAdapter extends BaseAdapter {

    @Override
    public int getCount() {
        return 30;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = getActivity().getLayoutInflater().inflate(R.layout.grid_item, null);
        }
        ImageView img = (ImageView) convertView.findViewById(R.id.grid_item_img);
        img.setImageResource(mImgRes);
        return convertView;
    }

}}

1 个答案:

答案 0 :(得分:0)

我发现了我的错误:

我需要获得滑动活动,而不是制作新活动。

SlidingMenu sMenu = this.getSlidingMenu();