2017-03-02 12 views
0

はmainActivityのコードを考えてみましょう、我々は結果を取得した後、このコールAsyncTask

new SearchTask(SearchPage.this).execute("1", query); 

ようAsyncTaskを使用して、ユーザーにリストに表示し、ユーザは、1つの項目をクリックすると、別の活動に移行します。第二の活動では、我々はこれらのコード行を使用する必要があり、選択した項目の完全なデータを表示するために、そして、インターネットからデータを取得する必要があります。

new SearchTask(DetailsPage.this).execute("2", id); 
new SearchTask(DetailsPage.this).execute("3", id); 

をしかし、問題は、これらの行は動作しませんです。でも、/とアプリがクラッシュするか、データが表示されない... どうすればこの問題を解決できますか?ここ

UPDATE アプリがクラッシュしたNPE

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.shahroozevsky.myfirstapp/com.shahroozevsky.myfirstapp.DetailsPage}: java.lang.NullPointerException 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
                       at android.app.ActivityThread.access$600(ActivityThread.java:141) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
                       at android.os.Handler.dispatchMessage(Handler.java:99) 
                       at android.os.Looper.loop(Looper.java:137) 
                       at android.app.ActivityThread.main(ActivityThread.java:5041) 
                       at java.lang.reflect.Method.invokeNative(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:511) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
                       at dalvik.system.NativeStart.main(Native Method) 
                      Caused by: java.lang.NullPointerException 
                       at com.shahroozevsky.myfirstapp.DetailsPage.onCreate(DetailsPage.java:51) 
                       at android.app.Activity.performCreate(Activity.java:5104) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)  
                       at android.app.ActivityThread.access$600(ActivityThread.java:141)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)  
                       at android.os.Handler.dispatchMessage(Handler.java:99)  
                       at android.os.Looper.loop(Looper.java:137)  
                       at android.app.ActivityThread.main(ActivityThread.java:5041)  
                       at java.lang.reflect.Method.invokeNative(Native Method)  
                       at java.lang.reflect.Method.invoke(Method.java:511)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)  
                       at dalvik.system.NativeStart.main(Native Method)  
+2

[logcatは、あなたのアプリが停止した理由を教えてくれます](http://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this)。あなたの質問を編集してください。 –

+0

'DetailsPage'クラスコード – rafsanahmad007

答えて

1

を投げ、私のログの猫は、コードのこれらの行が戻って任意のデータを生成しない原因 であるあなたの実際の問題はここで良いコード設計の欠如であることが表示されます:

いくつかのアイデア

  • Eventsを使用して、最初のAsyncTaskを追跡し、2番目の呼び出しをトリガーします。
  • どの呼び出しを行うかを知るには、毎回増加するインデックスを渡します。
  • indexの引数を取るeventクラスを作成する必要があります。
  • AsyncTaskSERIAL_EXECUTOR_THREADに電話してみることもできます。

このコードを少しだけ試してみてください。

EventBusはAndroid用のシンプルなライブラリで、hereがあります。

幸運を祈る!

+0

をお返事ありがとうございます。私は単にexecuteOnExecutor(AsyncTask.SERIAL_EXECUTOR)を使用して問題を解決しました –

0

使用IntentService +(などOttoなど)イベントバス

あなたはどんな活動からIntentServiceを開始し、それがバックグラウンドであなたの計算を行います。終了後、イベントバスを使用して結果を含むイベントを送信します。

0

問題はDetailsPageアクティビティonCreateメソッド(行51)にあります。それを確認してください