Android:获取数据库中的数据时出现NullPointerException错误

Android:获取数据库中的数据时出现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

这就是系统中发生的情况。 1.管理员登录这是在其他活动,但我不会发布它,因为它与此无关(没有问题) 2.在系统中注册用户(使用数据库没有问题) 3.单击添加用户按钮(其中现有用户 寄存器必须在ListView中显示其名称) 问题:当我单击adduser查看系统是否注册了该用户时,它会强制关闭

CurrentUser.java

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);