【问题标题】:Navigating error in Navigation Drawer?导航抽屉中的导航错误?
【发布时间】:2014-11-08 14:54:11
【问题描述】:

我正在尝试实现一个材质导航抽屉。像这样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));
        }
    }
}

编辑 .如果我在上述方法中通过以下代码。该应用程序不会进入 FeedActivity。它再次打开 mainActivity。当我按下列表中的第一项时。

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

如果问题不清楚,很抱歉。 提前致谢。

【问题讨论】:

  • 在问题 #2 中,请澄清您所说的应用程序无法正常工作的含义,并且应用程序的工作方式不同......当您替换为底部的代码时。您是否收到错误(什么错误),是否开始了错误的活动?等等……
  • 如果您要在多个活动中使用导航抽屉,那么您必须在每个活动中实现方法。例如,在这种情况下,最好使用片段而不是各种活动。我不明白第二个问题。请澄清
  • @Namespace 查看编辑...

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


【解决方案1】:

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

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

-#2 列表中的第一项是第 0 个位置项。它是从零开始的索引。我认为问题在于您的索引偏了一个。

【讨论】:

  • 我想你还没去第二个吧?我只是使用位置==0。但是当按下位置 1 时,它会转到主 Activity ?
  • 好的,之后按位置是什么作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
相关资源
最近更新 更多