2017-04-13 11 views
0

テーブル内の3つの値を更新する際に問題があります。そのクラスのアクティビティが存在するクラスでそのコードを使用するactivity.ifを持たないJavaクラスでその関数を呼び出していますが。ANDROID SQL NULLPOINTER getwritabledatabse

これはこれは私が

java.lang.NullPointerExceptionが次のようにfuctionの

private DatabaseHelper myDb = new DatabaseHelper(); 

public subject_class(){}; 

public subject_class(String subject, double num1, double num2) { 
    this.subject = subject; 
    this.num1 = num1; 
    this.num2 = num2; 
} 

public void update(String sub,double num1,double num2) { 
    myDb.update1(sub,num1,num2); 
} 

エラーがで呼び出すクラスであるdatabasehelperクラスコード

public DatabaseHelper(Context ctx) { 
    super(ctx, DATABASE_NAME, null, 1); 


} 

public DatabaseHelper() { 
    super(null, DATABASE_NAME, null, 1); 
} 
public boolean updateData(String subject, double present, double total) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL_1, subject); 
    contentValues.put(COL_2, present); 
    contentValues.put(COL_3, total); 

    db.update(TABLE_NAME, contentValues, "SUBJECT = ?", new String[]{subject}); 
    return true; 
} 

です:試行を仮想メソッドを呼び出す 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.Strinグラム、int型、android.databaseでandroid.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223) でnullオブジェクト参照 上android.database.sqlite.SQLiteDatabase $ CursorFactory、android.database.DatabaseErrorHandler「)。 sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) com.example.sravan.test.DatabaseHelper.update1(DatabaseHelper.java:129) at com.example.sravan.test.subject_class.update(subject_class.java: 27) at com.example.sesta.slist2 $ 1.onClick(subjectlistadapter.java:70) at android.view.View.performClick(View.java:5721) at android.widget.TextView.performClick(TextView .java: (Handler.java:739) (android.os.Handler.dispatchMessage(Handler.java:10931))にある とandroid.view.Viewで$ PerformClick.run(View.java:22620) とandroid.os.Handler.handleCallback 95)java.lang.reflect.Method.invoke(ネイティブメソッドでandroid.app.ActivityThread.main(ActivityThread.java:7409) でandroid.os.Looper.loop(Looper.java:148) で) com.android.internal.os.ZygoteInit.mainでcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230) (ZygoteInit.java:1120)で

事前

+0

staticグローバル変数static Context appContextを作成します。 appContextにアプリケーションコンテキストを割り当てます。 appContext = getApplicationContext();主なアクティビティのonCreate()メソッドであなたの非アクティビティクラスにアクセスしてください。新しいSetSql(MainActivity.appContext); - Ravi1187342 Apr 13、2012 at 9:28これは私を助けた –

答えて

0

でのおかげで、静的なグローバル変数

 static Context appContext; 

を作り、AppContextを内のアプリケーションコンテキストを割り当てます。

 appContext=getApplicationContext(); 

メインアクティビティのonCreate()メソッド。あなたの非アクティビティクラスにアクセスしてください。

 new SetSql(MainActivity.appContext);