public class MainActivity extends UserID {
private Button btn;
private EditText et1;
private EditText et2;
private TextView tv;
private String dbpwd = null;
private ArrayList<String> arraylist;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
et1 = (EditText) findViewById(R.id.editText1);
et2 = (EditText) findViewById(R.id.editText2);
tv = (TextView) findViewById(R.id.textView4);
System.out.println("btn名称:" + btn.getId());
System.out.println("已经获取view");
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("View v" + v.toString());
setclick();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void setclick() {
final String userid = et1.getText().toString();
final String pwd = et2.getText().toString();
System.out.println("输入的用户名为:" + userid + " 输入的密码为:" + pwd);
if (userid != null && pwd != null) {
System.out.println("已经判断输入框");
new Thread() {
public void run() {
DBUtil dbu = new DBUtil();
System.out.println("new DBUtil");
arraylist = dbu.getInfo("emp", " where UserID = """ + userid
+ """");
System.out.println("arraylist.toString():"
+ arraylist.toString());
}
}.start();
if (arraylist.size() > 8) {
dbpwd = arraylist.get(7);
System.out.println("getInfo已经结束。返回ArrayList");
System.out.println("数据库中的密码为:" + dbpwd);
if (pwd.equals(dbpwd)) {
setUserID(userid);
System.out.println("页面跳转中......");
Intent intent = new Intent(MainActivity.this,
MenuActivity.class);
startActivity(intent);
// finish();//登陆成功后完全关闭此activity
} else {
tv.setText("密码错误");
et2.setText("");
System.out.println("密码错误");
et2.setText("");
}
} else {
System.out.println("请输入正确的用户名和密码");
tv.setText("请输入正确的用户名");
et1.setText("");
et2.setText("");
}
} else {
System.out.println("请输入正确的用户名和密码");
tv.setText("请输入正确的用户名和密码");
et1.setText("");
et2.setText("");
}
}
}
|
|
| 15分 |
arraylist是在new 的工作线程创建的
而arraylist.size是在主线程调用的,而且还是紧接着的。 有可能arraylist.size调用时,工作线程还未初始化完,所以空指针了 你看下代码第62行是不是arraylist.size |
| 10分 |
public class MainActivity extends UserID
UserID是什么来的? 显示空指针的地方 tv已经赋值 这就奇怪了 |
| 10分 |
当你点击btn的时候,触发btn的监听事件。 这个时候 你的tv 还没有获取到控件。所以就 null了。解决方法:
第一种: 第二种: |
| 5分 |
代码执行顺序 从上往下 tv在 Button 设置监听之前 还有就是 在onCreate的时候 用户是不可见的吧 |
