我是Android编程新手。所以,我会用错误的技术词,对不起;)
我有一个应用程序。在这个应用程序,onCreate
,我正在检查我的数据库是否已创建(此检查是第一次使用),如果我的数据库尚未创建,我将路由用户转到第二个布局(或者激活。我不能确保一个人说得对。)在此活动中,当我尝试创建一个具有空指针异常的SQLiteDatabase参数时。
这是MainActivity.java的一部分
public class MainActivity extends Activity
{
VeriTabani veritabani; // vertiabani means database in turkish
@Override
protected void onCreate(Bundle savedInstanceState)
{
if(db_flag==0)
{
Intent intent = new Intent(MainActivity.this, SecondClass.class);
startActivity(intent);
//...
}
}
}
这是我的VeriTabani.java;
public class VeriTabani extends SQLiteOpenHelper
{
static final String VeriTabani="DATABASENAME";
static final int version=1;
public VeriTabani(Context context) {
super(context, VeriTabani, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE TABLENAME ( id INTEGER PRIMARY KEY AUTOINCREMENT, xxx STRING,yyy STRING );");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXIST TABLENAME");
onCreate(db);
}
}
而且,这是我的SecondClass.java;
public class SecondClass extends Activity
{
VeriTabani veritabani;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
SQLiteDatabase db=veritabani.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put("xxx", another_parameter);
//...
}
//...
}
}
}
我在这条线上有错误;
SQLiteDatabase db = veritabani.getWritableDatabase();
我正在使用相同的VeriTabani类在MainActivity中向DB插入记录,并且它运行良好。当我在另一个活动中使用相同的代码块时,我无法承受什么错误。 我想解决很简单,但我无法得到它。 谢谢你的帮助。
答案 0 :(得分:1)
你刚宣布了你的变量
VeriTabani veritabani;
您尚未初始化该变量。你需要在onCreate()方法上初始化它。
veritabani = new VeriTabani(YourActivityName.this);
答案 1 :(得分:0)
我在这条线上有错误;
SQLiteDatabase db=veritabani.getWritableDatabase();
您似乎没有初始化veritabani
变量。
将以下内容添加到该活动的onCreate()
:
veritabani = new VeriTabani(this);