Как прикрепить OnItemSelectedListener к WearableNavigationDrawerView? - PullRequest
0 голосов
/ 09 ноября 2018

Я реализовал NavigationDrawer, но в NavigationAdapter метод onItemSelected не работает. Я предполагаю, что привязка слушателя к чему-то отсутствует. Я думаю, что у класса MainActivity есть каждая часть, я просто не могу понять, где и как добавить onItemSelectedListener.

public class MainActivity extends WearableActivity {

    private WearableNavigationDrawerView mWearableNavigationDrawer;
    private static final SectionFragment.Section DEFAULT_SECTION = SectionFragment.Section.Main;

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

        setAmbientEnabled();

        mWearableNavigationDrawer = (WearableNavigationDrawerView) findViewById(R.id.top_navigation_drawer);
        mWearableNavigationDrawer.setAdapter(new NavigationAdapter(this));
        mWearableNavigationDrawer.getController().peekDrawer();
    }

    private final class NavigationAdapter
            extends WearableNavigationDrawerView.WearableNavigationDrawerAdapter implements WearableNavigationDrawerView.OnItemSelectedListener {

        private final Context mContext;
        private SectionFragment.Section mCurrentSection = DEFAULT_SECTION;

        NavigationAdapter(final Context context) {
            mContext = context;
        }

        @Override
        public String getItemText(int index) {
            return mContext.getString(SectionFragment.Section.values()[index].titleRes);
        }

        @Override
        public Drawable getItemDrawable(int index) {
            return mContext.getDrawable(SectionFragment.Section.values()[index].drawableRes);
        }

        @Override
        public void onItemSelected(int pos) {
            SectionFragment.Section selectedSection = SectionFragment.Section.values()[pos];

            // Only replace the fragment if the section is changing.
            if (selectedSection == SectionFragment.Section.Main) {
                setContentView(R.layout.activity_main);
            } else {
                setContentView(R.layout.activity_alarm);
            }

            mCurrentSection = selectedSection;
        }

        @Override
        public int getCount() {
            return SectionFragment.Section.values().length;
        }
    }
} 

1 Ответ

0 голосов
/ 14 июля 2019

В вашем методе onCreate() вы должны передать экземпляр вашего класса NavigationAdapter не только методу setAdapter() из mWearableNavigationDrawer, но и методу addOnItemSelectedListener() из mWearableNavigationDrawer:

  NavigationAdapter myAdapter = new NavigationAdapter(this)
  mWearableNavigationDrawer.setAdapter(myAdapter);
  mWearableNavigationDrawer.addOnItemSelectedListener(myAdapter);
...