当我第一次运行该应用程序时遇到此问题时,我正在按照教程来实现 SQLite 数据库。
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.montymason.sqlitedatabaseproject.MyDBHandler.databaseToString()' on a null object reference
我不确定这个空指针引用来自哪里。下面是我的主要 Activity 及其在数据库处理程序类中调用的函数的代码。
任何有助于解决问题的帮助将不胜感激。
主要 Activity 显示功能代码:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
// Database Helper
MyDBHandler db;
// TextView
TextView database_contents;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
displayItems();
}
// New entry button.
public void addNewItem_butt(View v){
Intent addnewItem = new Intent(MainActivity.this, addItem.class);
startActivity(addnewItem);
}
public void displayItems(){
String dbItems;
dbItems = db.databaseToString();
if(dbItems != null){
database_contents.setText(dbItems);
}
else{
database_contents.setText("No items to display.");
}
}}
数据库处理程序类将结果返回到主 Activity 的代码:
public String databaseToString(){
String displayItem = "";
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + TABLE_NAME + "WHERE 1";
// Cursor
Cursor readDB = db.rawQuery(query, null);
readDB.moveToFirst();
while(!readDB.isAfterLast()){
if(readDB.getString(readDB.getColumnIndex("productname")) != null){
displayItem += "Product Name - " + readDB.getString(readDB.getColumnIndex("productname")) +
"\nProduct Color - " + readDB.getString(readDB.getColumnIndex("productcolor"));
displayItem += "\n";
}
else{
displayItem += "No items to display.";
}
}
db.close();
return displayItem;
}
最佳答案
问题出在行
dbItems = db.databaseToString();
确保您正在数据库中提取数据。
如果有可能为空,则用空检查器将其包装起来。
if (db != null){
dbItems = db.databaseToString();
//then all your related code
}
关于java - String 不断调用 NullPointerException,不确定它从哪里获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34601939/