3

アプリのスライド メニュー ( 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;
    }

}}
4

1 に答える 1

0

私は間違いを見つけました:

新しいアクティビティを作成する代わりに、slidingactivity を取得する必要があります。

SlidingMenu sMenu = this.getSlidingMenu();
于 2013-03-22T09:28:49.843 に答える