2014-11-08 282 views
1

我想实现一个材质导航抽屉。像这样https://github.com/kanytu/android-material-drawer-template在导航抽屉中导航错误?

我有两个问题。

1.我在main Activity中声明onNavigationDrawerItemSelected方法中的所有意图。如果我的主要活动是针对另一项活动,如FeedActivity。那么我是否必须在我的feedActivity中声明不同的onNavigationDrawerItemSelected方法。

2.当我通过onNavigationDrawerItemSelected方法MainActivity意图。该应用程序无法正常工作。

public class MainActivity extends ActionBarActivity implements NavigationDrawerCallbacks{ 

    private Toolbar mToolbar; 
    private NavigationDrawerFragment mNavigationDrawerFragment; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); 
     setSupportActionBar(mToolbar); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.fragment_drawer); 
     mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public void onNavigationDrawerItemSelected(int position) { 
     if (position == 1){ 
      startActivity(new Intent(this, FeedListActivity.class)); 
     }else if (position == 2){ 
      startActivity(new Intent(this, VideoActivity.class)); 
     } 
    } 
} 

EDIT 。如果我在上述方法中通过这下面的代码。该应用程序不会FeedActivity。它再次打开主要活动。当我按列表中的第一项。

if (position == 0){ 
      startActivity(new Intent(this, MainActivity.class)); 

如果问题不清楚,对不起。 在此先感谢。

+1

在问题#2中,请说明您的应用程序无法正常工作,并且应用程序的工作方式不同......当您使用底部的代码进行替换时。你是否收到错误(什么错误),是否错误的活动开始? etc ... – NameSpace 2014-11-08 15:05:04

+1

如果您要在多个活动中使用导航抽屉,那么您必须在其中的每个方法中实施方法。例如,在这种情况下,最好使用片段而不是各种活动。我不明白第二个问题。请澄清 – mobilepotato7 2014-11-08 15:11:53

+1

@Namespace查看编辑... – user3467240 2014-11-08 15:12:18

回答

0

- #1新的活动将实施一个新的抽屉,以及一个新的抽屉布局。这只是一个永远不会存在的设计模式。如果你有一个持久的导航抽屉,它应该包装一个片段,并且你应该交换出这个片段。

如果您去了活动路线,您将不得不在每次活动中重新创建导航抽屉,并带有一个新的抽屉监听器。将活动视为完全取代旧活动,而片段只取代屏幕的一部分。

- #2列表中的第一项是第零位项目。这是从零开始的索引。我认为这个问题是你的索引被关闭了。

+0

我觉得你没有去第二个吧?我只是使用位置== 0。但是当位置1被按下时,它会转到主要活动? – user3467240 2014-11-08 16:14:23

+0

好吧,当你在那之后按下位置时它会做什么。 – NameSpace 2014-11-08 16:28:37