在NavigationDrawer中获取SelectedItem文本



我在Android Studio中使用内置的导航Drawer模板。

我想从导航抽屉菜单中获取所选项目的文本。

public void onNavigationDrawerItemSelected(int position) {
    // update the main content by replacing fragments
    FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
            .replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
            .commit();
}

有人能帮忙吗?

最简单的方法是修改回调。

NavigationDrawerFragment内滚动到底部,并将NavigationDrawerCallback更改为包含字符串:

public static interface NavigationDrawerCallbacks {
    void onNavigationDrawerItemSelected(int position, String selectedText);
}

要传递这个字符串,您必须修改方法selectItem(item position),使其也接受一个字符串。然后在OnItemClickListener中在onCreateView()中这样修改:

mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        TextView row = (TextView) view;
        String selectedText = row.getText().toString();
        selectItem(position, selectedText);
    }
});

继续,将selectItem(int position)修改为:

private void selectItem(int position, String selectedText) {
    mCurrentSelectedPosition = position;
    if (mDrawerListView != null) {
        mDrawerListView.setItemChecked(position, true);
    }
    if (mDrawerLayout != null) {
        mDrawerLayout.closeDrawer(mFragmentContainerView);
    }
    if (mCallbacks != null) {
        mCallbacks.onNavigationDrawerItemSelected(position, selectedText);
    }
}

现在,您已经选择了菜单文本。

最新更新