获取 NavigationDrawer 中的 SelectedItem 文本

Get the SelectedItem text in NavigationDrawer

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

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

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) 以同时获取一个字符串。然后在onCreateView()中的OnItemClickListener中修改为:

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

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