Android:获取数据库中的数据时出现NullPointerException错误
这就是系统中发生的情况。 1.管理员登录这是在其他活动,但我不会发布它,因为它与此无关(没有问题) 2.在系统中注册用户(使用数据库没有问题) 3.单击添加用户按钮(其中现有用户 寄存器必须在ListView中显示其名称) 问题:当我单击adduser查看系统是否注册了该用户时,它会强制关闭 CurrentUser.javaAndroid:获取数据库中的数据时出现NullPointerException错误,android,android-sqlite,android-contentprovider,Android,Android Sqlite,Android Contentprovider,这就是系统中发生的情况。 1.管理员登录这是在其他活动,但我不会发布它,因为它与此无关(没有问题) 2.在系统中注册用户(使用数据库没有问题) 3.单击添加用户按钮(其中现有用户 寄存器必须在ListView中显示其名称) 问题:当我单击adduser查看系统是否注册了该用户时,它会强制关闭 CurrentUser.java package com.example.istronggyminstructor; import java.util.ArrayList; import android
package com.example.istronggyminstructor;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.example.istronggyminstructor.registeredUserList.Users;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
public class CurrentUsers extends Activity {
private Button register;
private Button adduser;
EditText getusertext, getpass, getweight, textdisp;
View popupview, popupview2;
public static ArrayList<String> ArrayofName = new ArrayList<String>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_current_users);
register = (Button) findViewById(R.id.regbut);
adduser = (Button) findViewById(R.id.addbut);
register.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
LayoutInflater inflator = (LayoutInflater) getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
popupview = inflator.inflate(R.layout.popup, null);
final PopupWindow popupWindow = new PopupWindow(popupview,
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
popupWindow.showAtLocation(popupview, Gravity.CENTER, 0, 0);
popupWindow.setFocusable(true);
popupWindow.update();
Button dismissbtn = (Button) popupview.findViewById(R.id.close);
dismissbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
popupWindow.dismiss();
}
});
popupWindow.showAsDropDown(register, 50, -30);
}
});
//Thread.setDefaultUncaughtExceptionHandler(new forceclose(this));
}
public void registerUser(View v) {
EditText username = (EditText) popupview.findViewById(R.id.usertext);
EditText password = (EditText) popupview
.findViewById(R.id.passwordtext);
EditText weight = (EditText) popupview.findViewById(R.id.weight);
String getUsername = username.getText().toString();
String getPassword = password.getText().toString();
String getWeight = weight.getText().toString();
dataHandler dbHandler = new dataHandler(this, null, null, 1);
Users user =
new Users(getUsername, getPassword, Integer.parseInt(getWeight));
dbHandler.addUsers(user);
Toast.makeText(getApplicationContext(), "Registering...",
Toast.LENGTH_SHORT).show();
}
public void onClick_addUser(View v) {
LayoutInflater inflator = (LayoutInflater) getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
popupview2 = inflator.inflate(R.layout.popup2, null);
final PopupWindow popupWindow = new PopupWindow(popupview2,
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
popupWindow.showAtLocation(popupview2, Gravity.CENTER, 0, -10);
popupWindow.setFocusable(true);
popupWindow.update();
Button dismissbtn = (Button) popupview2.findViewById(R.id.close2);
dismissbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
popupWindow.dismiss();
}
});
popupWindow.showAsDropDown(register, 50, -30);
dataHandler dbHandler = new dataHandler(this, null, null, 1);
dbHandler.getAllUsers();
ListView list = (ListView)findViewById(R.layout.popup2);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, ArrayofName);
//LINE118 list.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.current_users, menu);
return true;
}
}
dataHandler.java
package com.example.istronggyminstructor;
import java.util.ArrayList;
import java.util.List;
import com.example.istronggyminstructor.registeredUserList.Users;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class dataHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "userInfo.db";
public static final String TABLE_USERINFO = "user";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_USERNAME = "username";
public static final String COLUMN_PASSWORD = "password";
public static final String COLUMN_WEIGHT = "weight";
public dataHandler(Context context, String name, CursorFactory factory, int version) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_USER_TABLE = "CREATE TABLE " +
TABLE_USERINFO + " ("
+ COLUMN_ID + " INTEGER PRIMARY KEY, " + COLUMN_USERNAME
+ " TEXT," + COLUMN_PASSWORD + " TEXT, " + COLUMN_WEIGHT + " INTEGER " + ");";
db.execSQL(CREATE_USER_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERINFO);
onCreate(db);
}
public void addUsers(Users user) {
ContentValues values = new ContentValues();
values.put(COLUMN_USERNAME, user.getUsers());
values.put(COLUMN_PASSWORD, user.getPassword());
values.put(COLUMN_WEIGHT, user.getWeight());
SQLiteDatabase db = this.getWritableDatabase();
db.insert(TABLE_USERINFO, null, values);
db.close();
}
public Users findUsers(String username) {
String query = "Select * FROM " + TABLE_USERINFO + " WHERE " + COLUMN_USERNAME
+ " = \"" + username + "\"";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
Users user = new Users();
if (cursor.moveToFirst()) {
cursor.moveToFirst();
Users.setUsers(cursor.getString(1));
//Users.setWeight(Integer.parseInt(cursor.getString(3))); not yet needed
cursor.close();
} else {
user = null;
}
db.close();
return user;
}
public List<Users> getAllUsers(){
List<Users> user = new ArrayList();
String selectQuery = "SELECT * FROM " + TABLE_USERINFO;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Users users = new Users();
users.setUsers(cursor.getString(1));
String name = cursor.getString(1);
CurrentUsers.ArrayofName.add(name);
// Adding contact to list
user.add(users);
} while (cursor.moveToNext());
}
// return user list
return user;
}
public boolean deleteUsers(String username) {
boolean result = false;
String query = "Select * FROM " + TABLE_USERINFO + " WHERE " + COLUMN_USERNAME + " = \""
+ username + "\"";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
Users user = new Users();
if (cursor.moveToFirst()) {
Users.setId(Integer.parseInt(cursor.getString(0)));
db.delete(TABLE_USERINFO, COLUMN_ID + " = ?",
new String[] { String.valueOf(user.getId()) });
cursor.close();
result = true;
}
db.close();
return result;
}
}
logcat输出的最后一行指出了您的问题:
at com.example.istronggyminstructor.CurrentUsers.onClick_addUser(CurrentUsers.java:118)
函数getAllUsers()应该是这样的
public List<String> getAllUsers(){
List<String> user = new ArrayList<String>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_USERINFO;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
user.add(cursor.getString(1));
} while (cursor.moveToNext());
}
// closing connection
cursor.close();
db.close();
// returning lables
return user;
}
公共列表getAllUsers(){
List user=new ArrayList();
//选择所有查询
String selectQuery=“SELECT*FROM”+表\用户信息;
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
//循环遍历所有行并添加到列表
if(cursor.moveToFirst()){
做{
user.add(cursor.getString(1));
}while(cursor.moveToNext());
}
//闭合连接
cursor.close();
db.close();
//退回标签
返回用户;
}
在onclick函数中
dataHandler db = new dataHandler(getApplicationContext()); //
List<String> user = db.getAllUsers();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, user);
setListAdapter(adapter);
dataHandler db=newdatahandler(getApplicationContext());//
List user=db.getAllUsers();
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,用户);
setListAdapter(适配器);
您在xml文件中没有任何listView,因此调用
ListView list = (ListView)findViewById(R.layout.popup2);
创建空列表;-)
您必须创建一个并调用:(R.id.popup2)
如果id为
popup2
的ListView
位于popup2.xml
文件中,则需要更改此设置
ListView list = (ListView)findViewById(R.id.popup2);
到
是的,先生,适配器是个问题,但我不知道如何解决它(我不知道它为什么会出错)我不知道你说的是哪一个“适配器”,我也不知道你粘贴的哪一行是#118。你知道
NullPointerException
是什么意思吗?试着在onClick中设置一个断点,看看var在哪里被赋值为null。我已经把方法断点放在哪里了,我会在哪里看到变量?谢谢,它不会解决NullPointerExceptionsToll错误,先生。。你认为空的变量是什么?我想是数组列表,我怎么知道数据库传递了arraylist上的值呢?@点击上面的fn检查一下。让我知道setListAdapter siri中的logcat errorit错误。我试图修复它,现在我将运行它。StackOverflow不是代码转储。打开常见问题解答,并在提问时提供。
dataHandler db = new dataHandler(getApplicationContext()); //
List<String> user = db.getAllUsers();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, user);
setListAdapter(adapter);
ListView list = (ListView)findViewById(R.layout.popup2);
ListView list = (ListView)findViewById(R.id.popup2);
ListView list = (ListView)findViewById(R.id.popup2);
ListView list = (ListView)popup2.findViewById(R.id.popup2);