在导航抽屉中导航错误?

时间:2014-11-08 14:54:11

标签: android android-intent navigation-drawer material-design

我正在尝试实施材质导航抽屉。这样的事情https://github.com/kanytu/android-material-drawer-template

我有两个问题。

1.我在我的onNavigationDrawerItemSelected中声明了main Activity方法中的所有意图。如果我的主要活动是针对其他活动,例如FeedActivity。然后我必须在onNavigationDrawerItemSelected中声明不同的feedActivity方法。

2.当我在MainActivity方法中传递onNavigationDrawerItemSelected意图时。该应用程序无法正常工作。

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

修改 如果我在上面的方法中通过以下代码。该应用程序不会使用FeedActivity。它再次打开mainActivity。当我按下列表中的第一项时。

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

如果问题不明确,抱歉。 提前致谢。

1 个答案:

答案 0 :(得分:0)

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

如果您去了活动路线,则必须使用新的抽屉监听器在每个活动中重新创建导航抽屉。将活动视为完全替换旧活动,而碎片仅替换屏幕的一部分。

- #2列表中的第一项是第0个位置项。它是基于零的索引。我认为问题是你的索引是一个人。