toggle (), когда кнопка «Домой» нажимает на скользящее меню с помощью actionbarsherlock

Вот моя основная активность

public class MainActivity extends SherlockActivity implements ActionBar.OnNavigationListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.Theme_Sherlock_Light_DarkActionBar); //Used for theme switching in samples
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //Hide title bar
    getSupportActionBar().setDisplayShowTitleEnabled(false);

    //Enable home button
    getSupportActionBar().setHomeButtonEnabled(true);

    //Home as up display
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    //Sliding menu
    SlidingMenu menu = new SlidingMenu(getBaseContext());
    menu.setMode(SlidingMenu.LEFT);
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    menu.setShadowWidthRes(R.dimen.shadow_width);
    menu.setShadowDrawable(R.drawable.shadow);
    menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    menu.setFadeDegree(0.35f);
    menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
    menu.setMenu(R.layout.slide_menu);
}

public boolean onOptionsItemSelected(MenuItem item) {       
    switch (item.getItemId()) {
        case android.R.id.home:
            //should be something in here that makes it slide to the left
            return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //Used to put dark icons on light action bar
    //boolean isLight = SampleList.THEME == R.style.Theme_Sherlock_Light;

    menu.add("New")
        .setIcon(R.drawable.contentnew)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    menu.add("Search")
        .setIcon(R.drawable.actionsearch)
        .setActionView(R.layout.collapsible_edittext)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

    getSupportMenuInflater().inflate(R.menu.main, menu);
    return true;
}
}

Я хочу установить, когда нажимается кнопка «Домой», она скользит влево. Дело в том, что я не могу расширить SlidingFragmentActivity как примеры в проекте jfeinstein10, потому что я уже расширил SherlockActivity. Как я могу достичь этого?


person laph    schedule 20.03.2013    source источник


Ответы (2)


Вам нужно внести изменения в код SlidingMenu. Заставьте SlidingFragmentActivity расширить SherlockFragmentActivity. Затем добавьте ActionBarSherlock в качестве проекта библиотеки в SlidingMenu. Теперь ваш проект должен добавить SlidingMenu в качестве проекта библиотеки, поскольку он ссылается на ActionBarSherlock.

Цитата из https://github.com/jfeinstein10/SlidingMenu#setup-with-actionbarsherlock:

Настройка с помощью ActionBarSherlock

  • Настройка как указано выше.
  • Получите чистую копию ActionBarSherlock и импортируйте ее в свое рабочее пространство Eclipse.
  • Добавьте ActionBarSherlock в качестве зависимости от SlidingMenu.
  • Перейдите к SlidingActivities, которые вы планируете использовать, чтобы они расширяли Sherlock___Activity вместо ___Activity.
person Matthias Robbers    schedule 21.03.2013
comment
Спасибо, это работает для меня. Просто хочу быть ясным для тех, у кого такая же проблема, в SherlockFragmentActivity.java (библиотека скользящего меню) измените public class SlidingFragmentActivity extends SlidingActivity implements SlidingActivityBase { на public class SlidingFragmentActivity extends SherlockFragmentActivity implements SlidingActivityBase { - person laph; 21.03.2013

Вам нужно расширить SlidingFragmentActivity. Если вы этого не сделаете, вы даже не сможете вызвать переключатель или установить фрагмент меню. Если вы расширили SFA, это будет примерно так:

case android.R.id.home:
    toggle();
    return true;
person BigBen3216    schedule 20.03.2013
comment
Если я расширяю SlidingFragmentActivity, как я могу использовать панель действий Sherlock? - person laph; 21.03.2013
comment
Вы просто повторяете мой вопрос, что, если я не продлю SlidingFragmentActivity, как я могу этого добиться? - person laph; 21.03.2013