【问题标题】:cannot access nav_header_main layout views无法访问 nav_header_main 布局视图
【发布时间】:2016-12-05 12:27:04
【问题描述】:

我无法访问 nav_header_main 布局中的视图

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);

    //setting profile picture in nav
    View emailview=navigationView.getHeaderView(2);
    View picview=navigationView.getHeaderView(0);
    View nameview=navigationView.getHeaderView(1);
    email_textview=(TextView)emailview.findViewById(R.id.emailtextView);
    profile_image=(ImageView)picview.findViewById(R.id.profile_imageView);
    username_textview=(TextView)nameview.findViewById(R.id.appbarusernametextview);
    Intent intent =new Intent(this,EmailPasswordActivity.class);
    email=this.getIntent().getExtras().getString("email");
    email_textview.setText(email);

当我使用 headerinflater 时,它可以工作,但会添加很多标题

【问题讨论】:

    标签: android navigation-drawer navigationview


    【解决方案1】:
    View headerView = navigationView.getHeaderView(0)
    email_textview = (TextView)headerView.findViewById(R.id.emailtextView);
    profile_image = (ImageView)headerView(R.id.profile_imageView);
    username_textview = (TextView)headerView(R.id.appbarusernametextview);
    

    试试这个希望对你有帮助

    【讨论】:

    • 兄弟我试过它给出错误...找不到视图
    • 你在 xml 中的 headerView 应该有 id nav_header_main
    • 我只是编辑我的答案试试这个......它也应该工作
    【解决方案2】:

    因为你做错了方式更改此代码

    View emailview=navigationView.getHeaderView(2);
    View picview=navigationView.getHeaderView(0);
    View nameview=navigationView.getHeaderView(1);
    email_textview=(TextView)emailview.findViewById(R.id.emailtextView);
    profile_image=(ImageView)picview.findViewById(R.id.profile_imageView);
    username_textview=(TextView)nameview.findViewById(R.id.appbarusernametextview);
    

    到这里

     email_textview=(TextView) navigationView.getHeaderView(0).findViewById(R.id.emailtextView);
     profile_image=(ImageView)navigationView.getHeaderView(0).findViewById(R.id.profile_imageView);
     username_textview=(TextView)navigationView.getHeaderView(0).findViewById(R.id.appbarusernametextview);
    

    【讨论】:

    • 感谢兄弟它的工作......你拯救了我的一天......非常感谢
    • @user3297303 如果对您有帮助,请接受答案。所以它会在未来对其他人有所帮助。
    【解决方案3】:

    用于访问 NavigationView Header Childs:

    TextView lblUserName = (TextView)navigationView.getHeaderView(0).findViewById(R.id.lblUserName);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多