0

asynctaskからメソッドを実行すると、アプリケーションがクラッシュします。しかし、理由はわかりません。エラーログも実際には詳細ではないため、問題を見つけるのが難しくなります。

それは文脈と関係があります、誰かが私が間違っていることを見つけることができますか?

public class UpdateHelpers extends Activity{

public String UPDATE_TIMESTAMP; 

    //opgeslagen timestamp verkrijgen
    public int getLastUpdateTimeStamp(){
        System.out.println(" getLastUpdateTimestamp Methode" );
          SharedPreferences savedTimeStamp = getSharedPreferences(UPDATE_TIMESTAMP,  MODE_PRIVATE);
          Integer startvalue = 1343192400; // timestamp last file from assets: (25-07-2012)
           Integer timestamp = savedTimeStamp.getInt("timestamp", startvalue); //standaard value: datum laatste json uit assets (25-07-2012)
           System.out.println("return value: "+timestamp);
           return timestamp;
        }

クラスはより大きく、より役立つメソッドですが、これはすでに機能しません)

非同期タスク(バックグラウンドで実行)

//check for updates
                    Integer ts = uh.getLastUpdateTimeStamp();
                    System.out.println("value of timestamp= "+ts);

ここで、uhは非同期タスクを使用してクラスのonCreateで宣言されます。

 public UpdateHelpers uh;
 uh = new UpdateHelpers();

必要なのは保存されたタイムスタンプです。タイムスタンプが存在しない場合は、ファイルをダウンロードしたとき(7月25日)からのタイムスタンプです。次に、別の方法で更新があるかどうかを確認できますが、コードが早くクラッシュします。

いくつかのsystem.out.printlnsを挿入したので、どこで問題が発生したかを確認できます。クラッシュログは次のとおりです。

08-26 16:14:54.932: I/System.out(12571):  getLastUpdateTimestamp Methode
08-26 16:14:54.932: W/dalvikvm(12571): threadid=8: thread exiting with uncaught exception (group=0x400259f8)
08-26 16:14:54.942: E/AndroidRuntime(12571): FATAL EXCEPTION: AsyncTask #1
08-26 16:14:54.942: E/AndroidRuntime(12571): java.lang.RuntimeException: An error occured while executing doInBackground()
08-26 16:14:54.942: E/AndroidRuntime(12571):    at android.os.AsyncTask$3.done(AsyncTask.java:200)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.lang.Thread.run(Thread.java:1102)
08-26 16:14:54.942: E/AndroidRuntime(12571): Caused by: java.lang.NullPointerException
08-26 16:14:54.942: E/AndroidRuntime(12571):    at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:146)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at com.hera.ontdekdelft.UpdateHelpers.getLastUpdateTimeStamp(UpdateHelpers.java:24)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at com.hera.ontdekdelft.StartUp$LoadData.doInBackground(StartUp.java:611)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at com.hera.ontdekdelft.StartUp$LoadData.doInBackground(StartUp.java:1)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-26 16:14:54.942: E/AndroidRuntime(12571):    ... 4 more

誰かアイデア?コードがたくさんあるので、コード全体を入れませんでした。ありがとうございました!

4

1 に答える 1

1

以下のようなアクティビティクラスを初期化することはできません。それはあなたのためにAndroidによって初期化される必要があります

uh = new UpdateHelpers();

ええと、あなたの活動でなければなりません。このようなことをする

uh = ActivityName.this
于 2012-08-26T14:31:34.613 に答える