Android - nav_header_menu 中的 setOnClickListener

Android - setOnClickListern in nav_header_menu

我会在 nav_header_menu 中添加事件。

我添加了登录和注册部分,然后当用户点击时我会显示相关的布局页面: https://ibb.co/wwmFzSk

我添加了 fragment_layout_user.xml 和 ActivityLoginUser class,代码为:

public class ActivityLoginUser extends AppCompatActivity{

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

    ActionBar ab = getSupportActionBar();
    ab.setDisplayHomeAsUpEnabled(true);
}}

如何在抽屉菜单中实现这个事件?

您可以按照以下代码访问header的视图。

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
View headerview = navigationView.getHeaderView(0);
TextView login= (TextView) headerview.findViewById(R.id.login);
login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       // Your code here 
    }
});

我也用@SumitSingh 的建议解决了它。我把解决这个问题的正确方法贴在这里。

我们需要在添加导航视图的 activity class 中添加此代码。

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
View headerview = navigationView.getHeaderView(0);
TextView login= (TextView) headerview.findViewById(R.id.login);
login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       // Your code here 
    }
});

将//您的代码替换为:

Intent loginUserIntent = new Intent(getContext(), ActivityLoginUser.class);

            /* Start the new activity */
            startActivity(loginUserIntent);

如果 getContext() 出错,请将其替换为 MainActivity.this

对我有用。