如何将onclick监听器附加到Android Studio的导航抽屉活动?

时间:2014-11-17 23:51:33

标签: android android-studio navigation-drawer

我试图在Android studio中创建一个带有导航抽屉的应用程序。

我正在使用Android Studio(测试版)0.8.14。在此版本中,有一个导航抽屉活动。我能够使用这段代码和我的字符串文件中的相应值

为我的导航抽屉菜单设置标签
public void onSectionAttached(int number) {
        switch (number) {
            case 1:
                mTitle = getString(R.string.login);
                break;
            case 2:
                mTitle = getString(R.string.sign_up);
                break;
            case 3:
                mTitle = getString(R.string.view_map);
                break;
            case 4:
                mTitle = getString(R.string.about);
                break;
            case 5:
                mTitle = getString(R.string.version);
        }
    }

它看起来非常好,但我无法弄清楚如何为每个项添加onClickListeners。

我还在NavigationDrawerFragment.java中添加了这个(由Android Studio自动创建):

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        mDrawerListView = (ListView) inflater.inflate(
                R.layout.fragment_navigation_drawer, container, false);
        mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                selectItem(position);
            }
        });
        mDrawerListView.setAdapter(new ArrayAdapter<String>(
                getActionBar().getThemedContext(),
                android.R.layout.simple_list_item_activated_1,
                android.R.id.text1,
                new String[]{
                        getString(R.string.login),
                        getString(R.string.sign_up),
                        getString(R.string.view_map),
                        getString(R.string.about),
                        getString(R.string.version),
                }));
        mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
        return mDrawerListView;
    }

我想为每个列表项启动一个不同的活动,但我无法理解如何以及遗憾的是我似乎无法找到使用Android Studio内置导航抽屉活动的教程。

此外,是否可以在我的所有活动中使用此导航栏?每次创建新活动时是否需要创建新的导航抽屉片段?

提前致谢!

2 个答案:

答案 0 :(得分:0)

拥有导航抽屉的想法是使用片段。每当您单击导航抽屉中的项目时,启动新活动都不会非常有效。

selectItem(position)方法中,您可以执行一些代码,为导航抽屉中的列表项创建新片段。每个导航项应该是一个不同的片段,然后只需使用片段事务将其添加到主活动的容器视图中。

作为该方法的简单示例:

private void selectItem(int position) {

FragmentManager fragmentManager = getFragmentManager();

        switch(position) {
            //fragment for position 0
            case 0:
                fragmentManager.beginTransaction()
                        .replace(R.id.container, new Fragment0())
                        .commit();
                break;
            //fragment for postion 1
            case 1:
                fragmentManager.beginTransaction()
                        .replace(R.id.container, new Fragment1())
                        .commit(); 
                break;
            //fragment for position 2
            case 2:
                fragmentManager.beginTransaction()
                        .replace(R.id.container, new Fragment2())
                        .commit(); 
                break;             
            default:
                break;
        }
}

这可能不是您想要的,但它是您尝试完成的选项。

作为onSectionAttached()工作的注释,您的所有片段都必须调用它以将其标题传递给主要活动。

有关详细信息,请参阅this链接。

答案 1 :(得分:0)

为了在导航抽屉上放置onclicklistener,只需在您要更改标题栏的代码行下方放置一个intent,即在switch case block中 例如

case 1:    
mTitle = getString(R.string.login);    
Intent transfer = new Intent(HomeFragment.this,NextActivity.class);    
startActivity(transfer);  

这将为你做。