2012-05-05 8 views
0

私は別のもので関数を呼び出すためにしようとしていますが、私は、NullPointerExceptionが発生だけでなく、他の多くのエラーが発生します。..私のJava関数はnullpointerexceptionをスローしますか?

public float maxFat() { 

    SharedPreferences customSharedPreference = getSharedPreferences(
      "myCustomSharedPrefs", Activity.MODE_PRIVATE); 

    float cals = customSharedPreference.getFloat("calpref", 0f); 
    float maxfat = cals/36; 

    return maxfat; 
} 

そして、ここで私がここ

public XYMultipleSeriesDataset getFatDataset() { 

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
    Cursor c = database.rawQuery("select * from dailystats;", null); 
    float i = 1.0f; 

    c.moveToFirst(); 
    XYSeries seriesFat = new XYSeries("Fat"); 
    XYSeries seriesMaxFat= new XYSeries("Maximum Fat"); 
    while (!c.isAfterLast()) { 
     seriesFat.add(i++, c.getDouble(2)); 
     StatsActivity stats= new StatsActivity(); 
     seriesMaxFat.add(i, stats.maxFat()); 
     c.moveToNext(); 
    } 
    dataset.addSeries(seriesFat); 
    dataset.addSeries(seriesMaxFat); 
    return dataset; 
} 

それを呼び出すところでは、ログですファイル

05-05 11:39:22.737: E/AndroidRuntime(31282): java.lang.NullPointerException 
05-05 11:39:22.737: E/AndroidRuntime(31282): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:153) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at com.nutriapp.StatsActivity.maxFat(StatsActivity.java:183) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at com.nutriapp.DatabaseAdapter.getFatDataset(DatabaseAdapter.java:396) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at com.nutriapp.FatActivity.getIntent(FatActivity.java:52) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at com.nutriapp.StatsActivity$1.onClick(StatsActivity.java:127) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at android.view.View.performClick(View.java:3511) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at android.view.View$PerformClick.run(View.java:14105) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at android.os.Handler.handleCallback(Handler.java:605) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at android.os.Handler.dispatchMessage(Handler.java:92) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at android.os.Looper.loop(Looper.java:137) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at java.lang.reflect.Method.invokeNative(Native Method) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at java.lang.reflect.Method.invoke(Method.java:511) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-05 11:39:22.737: E/AndroidRuntime(31282): at dalvik.system.NativeStart.main(Native Method) 
05-05 11:39:22.937: D/dalvikvm(31282): GC_CONCURRENT freed 135K, 3% free 9633K/9863K, paused 17ms+29ms 
05-05 11:39:23.047: E/SQLiteDatabase(31282): close() was never explicitly called on database '/data/data/com.nutriapp/databases/nutriwellness.db' 
05-05 11:39:23.047: E/SQLiteDatabase(31282): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at com.nutriapp.DatabaseAdapter.open(DatabaseAdapter.java:215) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at com.nutriapp.FatActivity.getIntent(FatActivity.java:49) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at com.nutriapp.StatsActivity$1.onClick(StatsActivity.java:127) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.view.View.performClick(View.java:3511) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.view.View$PerformClick.run(View.java:14105) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.os.Handler.handleCallback(Handler.java:605) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.os.Handler.dispatchMessage(Handler.java:92) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.os.Looper.loop(Looper.java:137) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at java.lang.reflect.Method.invokeNative(Native Method) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at java.lang.reflect.Method.invoke(Method.java:511) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-05 11:39:23.047: E/SQLiteDatabase(31282): at dalvik.system.NativeStart.main(Native Method) 
05-05 11:39:23.047: E/System(31282): Uncaught exception thrown by finalizer 
05-05 11:39:23.098: E/System(31282): java.lang.IllegalStateException: Don't have database lock! 
05-05 11:39:23.098: E/System(31282): at android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090) 
05-05 11:39:23.098: E/System(31282): at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2182) 
05-05 11:39:23.098: E/System(31282): at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2178) 
05-05 11:39:23.098: E/System(31282): at android.util.LruCache.trimToSize(LruCache.java:197) 
05-05 11:39:23.098: E/System(31282): at android.util.LruCache.evictAll(LruCache.java:285) 
05-05 11:39:23.098: E/System(31282): at android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143) 
05-05 11:39:23.098: E/System(31282): at android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126) 
05-05 11:39:23.098: E/System(31282): at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914) 
05-05 11:39:23.098: E/System(31282): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182) 
05-05 11:39:23.098: E/System(31282): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168) 
05-05 11:39:23.098: E/System(31282): at java.lang.Thread.run(Thread.java:856) 
+0

'getSharedPreferences()'がnullを返していますか? – jordeu

+0

そのクラスでは、そうではありません。それはうまくいっている! – callback

+0

どのラインで例外が発生しますか? – harold

答えて

1

クラスStatsActivityActivityまで延長されますか?その場合は、newキーワードを使用してクラスの新しいインスタンスを作成することはできず、アプリケーション設計を再考する必要があります。

+0

どうすればいいのですか? – callback

+0

インスタンスを取得することはできません。 'Intent'を作成し、' startActivity'を呼び出すことで、新しい 'Activity'を開始します。 [アクティビティライフサイクル](http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle)と[アプリケーションの基本事項](http://developer.android.com/guide/topics)を参照してください。 /fundamentals.html) –

0

データベースがクローズされていない例外が表示されている理由は、カーソルを閉じることではありません。あなたはカーソルで行った後 は自分XYMultipleSeriesDataset機能で

c.close()

を行います。

関連する問題