2014-03-05 41 views
0

我是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中的數據庫,它的工作原理完美。當我在另一個活動中使用相同的代碼塊時,我無法發現什麼是錯誤的。 我想解決很簡單,但我不能得到它。 感謝您的幫助。

回答

0

即時消息有此錯誤;

SQLiteDatabase db=veritabani.getWritableDatabase(); 

貌似你沒有初始化的變量veritabani

以下添加到該活動的onCreate()

veritabani = new VeriTabani(this); 
1

你剛纔宣佈的變量

VeriTabani veritabani; 

你沒有初始化的變量。你需要在onCreate()方法上初始化它。

veritabani = new VeriTabani(YourActivityName.this); 
相關問題