登录&注册按钮可点击导航抽屉 - Android

时间:2017-09-25 08:12:36

标签: android navigation-drawer

我正在开发和提供用户注册和登录的Android应用程序。在导航抽屉中,我为登录和注册添加了两个TextView。 但是,无论我为这些TextViews放置OnClickListener,都会出错:

尝试在空对象引用上调用虚方法'void android.view.View.setOnClickListener(android.view.View $ OnClickListener)'

请检查此图片,TextViews位于导航栏顶部

enter image description here

帮助。谢谢

已编辑代码

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {

       // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.home, menu);
        child=menu.findItem(R.id.action_cart).getActionView();
        count_tv=(TextView)child.findViewById(R.id.cart_count_tv);

        g=Globals.getInstance();


        NavigationView navigationView=
        (NavigationView)findViewById(R.id.nav_view);
        View headerView=navigationView.getHeaderView(0);

        TextView username=(TextView)findViewById(R.id.usernameNavBar);
        TextView email=(TextView)findViewById(R.id.emailNavBar);

        withLogin=(FrameLayout)findViewById(R.id.login_frame_layout);
        wdoutLogin=(LinearLayout)findViewById(R.id.not_login_frame_layout);


        if(g.loginstatus==true) {
            withLogin.setVisibility(View.VISIBLE);
            username.setText("name");
            email.setText("email");
        }else {

            wdoutLogin.setVisibility(View.VISIBLE);
        }


                login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(HomeActivity.this, "Login button pressed", Toast.LENGTH_SHORT).show();
            }
        });
}

2 个答案:

答案 0 :(得分:0)

试试这个:

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

 headerView = navigationView.getHeaderView(0);

 tvLogin = (Textview) headerView.findViewById(R.id.login_textview_id);

使用headerView,您必须转换TextView。然后在textview上应用click listner。

答案 1 :(得分:0)

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

View header=navigationView. findViewById(R.id.header);                           
view=navigationView.inflateHeaderView(R.layout.nav_header_main);*/
login = (TextView)header.findViewById(R.id.login);
register = (TextView)header.findViewById(R.id.register);
login.setOnClickListener(this);
register.setOnClickListener(this);

您应该对标题视图进行充气,并使用该视图来强制转换TextView。希望这可以解决你的问题。

您没有投射TextView或通过id调用。所以Suystem找不到名字登录的东西