2013-03-19 15 views
3

我使用下面庫在我的應用我的滑動菜單(https://github.com/bk138/LibSlideMenu)。使用slidemenu:向後滑動和填充不工作

在我的應用程序的滑動菜單的作品。我可以從右向左滑動並出現菜單。但問題是,當我在菜單中時,我無法滑回片段,我是從哪裏來的。 回去的唯一方法是使用後退按鈕。此外,當你在菜單中我沒有你在哪裏看到的背景前面的片段右側的填充。

我正在尋找像天。我已經搜索了這個問題的例子,但找不到我遺忘的重要事情。

我的主要活動:

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; 
    } 

}} 

回答

0

我發現我的錯誤的mainfragment:

我需要獲得slidingactiv而不是製造一個新的。

SlidingMenu sMenu = this.getSlidingMenu();