酸菜401 2022-06-07 18:08 采纳率: 50%
浏览 147

Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener

问题遇到的现象和发生背景

遇到一个空指引,但不知道怎么改

问题相关代码,请勿粘贴截图

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.ArrayList;

import zj.yd1.jsjxy.gdpnc.cn.edu.Adapter.AP;
import zj.yd1.jsjxy.gdpnc.cn.edu.Adapter.DBAdapter;
import zj.yd1.jsjxy.gdpnc.cn.edu.R;
import zj.yd1.jsjxy.gdpnc.cn.edu.TabHost.MyActivity;

import static android.widget.Toast.makeText;

public class LogActivity extends AppCompatActivity implements OnClickListener {
private DBAdapter dbAdapter;
//声明控件
private EditText et_username,et_password;
private Button button_log,button_reg,mbutton_log;

//oncreate开始
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    dbAdapter = new DBAdapter(this);
    dbAdapter.open();
    initView();

}
//oncreate结束

private void initView(){
    et_username = findViewById(R.id.textView_username);
    et_password = findViewById(R.id.textView_password);
    button_log = findViewById(R.id.button_log);
    button_reg = findViewById(R.id.button_reg);
    mbutton_log = findViewById(R.id.manager_button_login);

    button_log.setOnClickListener(this);
    button_reg.setOnClickListener(this);
    mbutton_log.setOnClickListener(this);
}

//跳转主界面


@Override
public void onClick(View view) {
    String username = et_username.getText().toString().trim();
    String password = et_password.getText().toString().trim();
    switch (view.getId()) {

        case R.id.button_reg:
            startActivity(new Intent(LogActivity.this, RegisterActivity.class));
            finish();
            break;
        case R.id.Manager_Login_Button:
            startActivity(new Intent(LogActivity.this, ManagerLoginActivity.class));
            finish();
            break;
        case R.id.button_log:
            startActivity(new Intent(LogActivity.this, MyActivity.class));
            AP[] ap = dbAdapter.read();

            if (username != null && password != null && username.equals("") || password.equals("")) {
                //开始遍历
                boolean match = false;
                for (int i = 0; i < ap.length; i++) {
                    int xml_username = ap[i].username;
                    int xml_password = ap[i].userpasswd;
                    if (username.equals(xml_username) && password.equals(xml_password)) {
                        match = true;
                        break;
                    } else {
                        match = false;
                    }
                }

// 结束遍历
if (match) {
makeText(LogActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LogActivity.this, MainActivity.class);
startActivity(intent);
finish();//销毁此Activity
}

            } else {
                makeText(LogActivity.this, "账号或者密码不能为空", Toast.LENGTH_LONG).show();
            }


    }
}

}

运行结果及报错内容

Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

我的解答思路和尝试过的方法

百度了,没找到结果,特来请教各位

我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-06-07 20:41
    关注

    打断点跟踪一下,或者用system.out.println()打印跟踪一下,如下方法。

    img

    评论

报告相同问题?

问题事件

  • 修改了问题 6月7日
  • 创建了问题 6月7日

悬赏问题

  • ¥60 怎样隐藏win7系统进程?
  • ¥15 CBF预处理数据归一化的时候报错了如下图
  • ¥15 qt 转 msvc 后 Opencv 始终打不开视频!
  • ¥15 yolo v5中labelimg的作用
  • ¥15 国赛c题2021,没有理解这一串代码的意思,这样报错该怎么解决(语言-matlab)
  • ¥15 一、执行完中断程序后如何继续运行,二、中断结束后如何跳过中断触发前的点位(LOW点不要继续运行,可以运行UP点)(关键词-程序运行)
  • ¥15 if为什么跳过if 直接执行else 中文
  • ¥200 解决登录微信老版本限制封号问题
  • ¥15 mysql中时间处理问题
  • ¥20 讲解此音频放大电路原理及关键部分