【问题标题】:NullPointerException when executing query on SQLite Db in android [duplicate]在android中对SQLite Db执行查询时出现NullPointerException [重复]
【发布时间】:2017-05-09 21:13:25
【问题描述】:

现在我在这里得到空指针异常。在 ViewAllData 方法 myAdapter = new SQLCustomViewAllDataAdapter(SQLViewAllData.this,aList); here 中,我在创建构造函数时遇到错误。

SQLViewAllData.java

public class SQLViewAllData extends Activity {

private SQLDbHelper myDbHelper;
private SQLCustomViewAllDataAdapter myAdapter;
private ListView myListView;
private ArrayList<SQLPojo.UserDetails> aList = new ArrayList<>();
//private Context myContext;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listview_view_data);
    //myContext = this;

    widgetInitialization();
    viewAllData();
}
//Initializing Widgets
public void widgetInitialization() {
    myDbHelper = new SQLDbHelper( this );
    myListView = (ListView)findViewById( R.id.listview_view_data_LV );
}

public ArrayList<SQLPojo.UserDetails> getUserInfo(){
    return myDbHelper.getUserDetails();
}

//view all data stored in DB
public void viewAllData() {
    aList = getUserInfo();
    myAdapter = new SQLCustomViewAllDataAdapter(SQLViewAllData.this,aList);
    myListView.setAdapter(myAdapter);
}

}

【问题讨论】:

标签: android database sqlite android-layout nullpointerexception


【解决方案1】:

你需要改变:

myDbHelper = new SQLDbHelper( myContext );

myDbHelper = new SQLDbHelper(this);

同时删除“Activity myContext”字段,因为您的类已经扩展了 Activity。

【讨论】:

  • OP 可能需要myContext 供以后使用,因此您也可以建议在调用该函数之前在oncreate 中分配myContext = this
  • @PavneetSingh 如果他在某个地方需要上下文,他将传递 this 而不是无意义的字段
  • 想想,可能有 2 个其他函数使用相同的变量,或者可能没有,但如果它存在,那么 IMO 你可以向 OP 解释为什么 mcontext 为空以及他能做什么如果有任何类似的情况,请务必解决此问题,剩下的当前问题将以此解决,所以我确实首先投票给你
【解决方案2】:

你还没有初始化上下文,即 myContext

【讨论】:

  • 这应该只是一个评论。我知道你还不能发表评论,但尽量不要发表评论作为答案
  • 他需要 50 声望才能发表评论。所以他无法发表评论。他不是故意的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-29
  • 2014-10-31
  • 2016-09-03
  • 2018-09-26
  • 2011-08-28
  • 2020-12-18
相关资源
最近更新 更多