2014-04-03 70 views
0

我遵循了构建导航抽屉的android开发人员网站,但似乎无法找到如何为每个部分实现单独的活动/片段。我到目前为止的代码如下:如何实现导航抽屉

@Override 
public void onNavigationDrawerItemSelected(int position) { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager 
      .beginTransaction() 
      .replace(R.id.container, 
        PlaceholderFragment.newInstance(position + 1)).commit(); 
} 

在实现操作栏选项卡菜单我用的代码如下:

@Override 
    public Fragment getItem(int index) { 
     switch (index) { 
     case 0: 
      return new FirstTabFragment(); 
     case 1: 
      return new SecondTabFragment(); 
     case 2: 
     } 
     return null; 
    } 

我试过的第二个示例代码大约20个不同的实现尝试使其与导航抽屉而不是操作栏选项卡一起工作。任何能指引我走向正确方向的人都会对我有利。

整个MainActivity.java文件位于下方,以防万一。

public class MainActivity extends ActionBarActivity implements 
    NavigationDrawerFragment.NavigationDrawerCallbacks { 


private NavigationDrawerFragment mNavigationDrawerFragment; 


private CharSequence mTitle; 

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

    mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.navigation_drawer); 
    mTitle = getTitle(); 

    mNavigationDrawerFragment.setUp(R.id.navigation_drawer, 
      (DrawerLayout) findViewById(R.id.drawer_layout)); 
} 

@Override 
public void onNavigationDrawerItemSelected(int position) { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager 
      .beginTransaction() 
      .replace(R.id.container, 
        PlaceholderFragment.newInstance(position + 1)).commit(); 
} 

public void onSectionAttached(int number) { 
    switch (number) { 
    case 1: 
     mTitle = getString(R.string.title_section1); 
     break; 
    case 2: 
     mTitle = getString(R.string.title_section2); 
     break; 
    case 3: 
     mTitle = getString(R.string.title_section3); 
     break; 
    case 4: 
     mTitle = getString(R.string.title_section4); 
     break; 
    case 5: 
     mTitle = getString(R.string.title_section5); 
     break; 
    case 6: 
     mTitle = getString(R.string.title_section6); 
     break; 
    case 7: 
     mTitle = getString(R.string.title_section7); 
     break; 
    case 8: 
     mTitle = getString(R.string.title_section8); 
     break; 
    case 9: 
     mTitle = getString(R.string.title_section9); 
     break; 
    case 10: 
     mTitle = getString(R.string.title_section10); 
     break; 
    } 
} 

public void restoreActionBar() { 
    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    actionBar.setDisplayShowTitleEnabled(true); 
    actionBar.setTitle(mTitle); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (!mNavigationDrawerFragment.isDrawerOpen()) { 

     getMenuInflater().inflate(R.menu.main, menu); 
     restoreActionBar(); 
     return true; 
    } 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

public static class PlaceholderFragment extends Fragment { 

    private static final String ARG_SECTION_NUMBER = "section_number"; 

    public static PlaceholderFragment newInstance(int sectionNumber) { 
     PlaceholderFragment fragment = new PlaceholderFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, 
       false); 
     TextView textView = (TextView) rootView 
       .findViewById(R.id.section_label); 
     textView.setText(Integer.toString(getArguments().getInt(
       ARG_SECTION_NUMBER))); 
     return rootView; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     ((MainActivity) activity).onSectionAttached(getArguments().getInt(
       ARG_SECTION_NUMBER)); 
    } 
} 

}

回答

0

这里是你一个很好的教程。

http://www.androidhive.info/category/navigation-drawer/

+0

我仍然尝试使用本教程中给出的代码时出现错误。它似乎在android开发网站上使用了不同的实现方法。无论如何,感谢您的链接,我会继续努力。 – Aluxzi

+0

经过多次尝试并稍微调整了一下代码,我设法让它起作用,所以谢谢。 – Aluxzi