使用默认的Android Studio导航抽屉切换片段

时间:2014-07-22 23:54:51

标签: android android-fragments android-studio navigation-drawer

我在Android Studio中实现导航抽屉时有点迷失。 onCreate方法调用PlaceholderFragment类,我真的不明白它是什么。

但无论如何,我应该在哪里实施onItemClickListener根据导航抽屉中选择的项目显示不同的fragments

这是我目前的PlaceholderFragment:

public static class PlaceholderFragment extends Fragment {

    private ListView listView;
    private CustomAdapter expenseAdapter;

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);

        expenseAdapter = new CustomAdapter(getActivity());

        listView = (ListView) rootView.findViewById(R.id.lvExpense);
        listView.setAdapter(expenseAdapter);
        expenseAdapter.loadObjects();
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                String expense = expenseAdapter.getItem(position).get("title").toString();
                Toast.makeText(getActivity(), expense, Toast.LENGTH_SHORT).show();
            }
        });

        return rootView;
    }
}

PS:班级中的onItemClickListener用于另一个ListView,而不是导航抽屉中的ListView。基本上我正在使用parse.com并使用db中的项填充onNavigationDrawerItemSelected

感谢。

编辑: 我终于在Fragment fragment = null; switch (position) { case 0: fragment = new HomeFragment(); break; case 1: fragment = new SearchFragment(); break; default: break; } if (fragment != null) { FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.container, fragment).commit(); } 中使用了这段代码:

fragment = new HomeFragment();

在{{1}}中,android studio告诉我需要android.support.v4.app.fragment。那是为什么?

2 个答案:

答案 0 :(得分:7)

(如果你没有这样做):在AndroidStudio中,最好使用导航抽屉生成示例活动(Alt + Insert - &gt;活动 - &gt;导航抽屉活动(在Android Studio 0.8。+上)) 您将获得托管NavigationDrawerFragment的活动以及一些drawable。

在NavigationDrawerFragment onCreateView中,您填充要在抽屉中显示的列表项,活动将自动实现方法NavigationDrawerFragment.NavigationDrawerCallbacks的界面onNavigationDrawerItemSelected(int position)。单击导航抽屉中某个位置的项目时会调用此方法,在此方法中,将R.id.container替换为该位置所需的片段。

您不必使用PlaceholderFragment,它是第一次显示的模拟,在您实现自己之前。随意删除它并创建您想要的任何片段。

OnItemClickListener已经在NavigationDrawerFragment的方法onCreateView中实现。

答案 1 :(得分:1)

占位符片段就是这样。它是一个空白片段,在自动生成的代码中用于向您展示如何使用导航抽屉。您可以在导航抽屉中使用任何片段。

在实现NavigationDrawerFragment的活动中的onNavigationDrawerItemSeleced(int position)中选择项目时,可以显示片段。您可以使用FragmentManager将旧片段替换为新片段。