Android 无法访问查询

Android 无法访问查询,android,Android,I get db无法在此类中重新加载错误。在displayListView()函数中。谁能帮我解决这个问题。谢谢 这里有密码吗 公共类PrepSqlitedActivity扩展了活动{ // private static final String DB_NAME = "hymnals"; //A good practice is to define database field names as constants private SimpleCursorAdapter dataAda

I get db无法在此类中重新加载错误。在displayListView()函数中。谁能帮我解决这个问题。谢谢

这里有密码吗

公共类PrepSqlitedActivity扩展了活动{

// private static final String DB_NAME = "hymnals";

//A good practice is to define database field names as constants



 private SimpleCursorAdapter dataAdapter;
 private Context context;

 @Override
  public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //Our key helper
    ExternalDbOpenHelper repo = ExternalDbOpenHelper.getInstance( context );

    SQLiteDatabase  db = repo.getWritableDatabase();


    displayListView();


}

 private void displayListView() {

 //all hymns are fetched 
  *final Cursor cursor = db.fetchAllHymns();*

  // The desired columns to be bound
  String[] columns = new String[] {

          ExternalDbOpenHelper.HYMN_ID,
          ExternalDbOpenHelper.HYMN_NAME,


  };

  // the XML defined views which the data will be bound to
  int[] to = new int[] {
    R.id.tVid,
    R.id.name,

  };

 // create the adapter using the cursor pointing to the desired data
 //as well as the layout information
     dataAdapter = new SimpleCursorAdapter(
    this, R.layout.activity_main,
    cursor,
    columns,
    to,
    0);

  ListView listView = (ListView) findViewById(R.id.list);
 // Assign adapter to ListView
  listView.setAdapter(dataAdapter);


  listView.setOnItemClickListener(new OnItemClickListener() {

   @Override
   public void onItemClick(AdapterView<?> listView, View view,

     int position, long id) {

// Get the cursor, positioned to the corresponding row in the result set

   Cursor cursor = (Cursor) listView.getItemAtPosition(position);

// Get the state's capital from this row in the database.

   }

  });


 }

  }        
//私有静态最终字符串DB_NAME=“hymnals”;
//一个好的做法是将数据库字段名定义为常量
私有SimpleCursorAdapter数据适配器;
私人语境;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//我们的主要助手
ExternalDbOpenHelper repo=ExternalDbOpenHelper.getInstance(上下文);
SQLiteDatabase db=repo.getWritableDatabase();
displayListView();
}
私有void displayListView(){
//所有的赞美诗都被取来了
*最终游标=db.fetchallhyms()*
//要绑定的所需列
字符串[]列=新字符串[]{
ExternalDbOpenHelper.hymm_ID,
ExternalDbOpenHelper.hymm_名称,
};
//数据将绑定到的XML定义的视图
int[]至=新int[]{
R.id.tVid,
R.id.name,
};
//使用指向所需数据的光标创建适配器
//以及布局信息
dataAdapter=新的SimpleCorsorAdapter(
这个,R.layout.activity_main,
光标,
柱,
到
0);
ListView ListView=(ListView)findViewById(R.id.list);
//将适配器分配给ListView
setAdapter(dataAdapter);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView列表视图、视图、,
内部位置,长id){
//获取光标,定位到结果集中的对应行
游标游标=(游标)listView.getItemAtPosition(位置);
//从数据库中的此行获取州的资本。
}
});
}
}        

变量
db
onCreate
方法中的局部变量。请改用实例变量:

class /* ... */ {
    private SQLiteDatabase db;
    /* ... */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        /* ... */
        db = repo.getWritableDatabase();
        /* ... */
    }
    /* ... */
}

但现在类型的fetchAllHymns()未定义SQLIteDatabase@Azeem
fetchallhyms
是您的创作。方法
fetchallhyms
不是Android框架的一部分,所以我真的想知道它是否可用。根据你的另一个问题,我猜你想要
repo
作为实例变量,并且它支持该方法。