Web サービスからいくつかの json オブジェクトを取得する必要があるアプリケーションを作成しています。順調に進んでいます。しかし、これらの json オブジェクトをダウンロードできない場合に備えて、ユーザーを回避する方法を見つけたいと考えています。そのため、偽の URL を使用しています。そして今、私のアプリはユーザーを回避せずに強制終了します。
呼び出し :
/*
* Async call to fill the category spinner
*/
private class CallCategory extends AsyncTask<Void,Void,Void>{
private ProgressDialog dialog;
protected void onPreExecute() {
this.dialog = ProgressDialog.show(ApPictureActivity.this, "Chargement", "Récupération des catégories...", true);
}
protected void onPostExecute(Void v) {
dialog.cancel();
Log.i("fill the spiner", _ListCategory.toString());
if(!_ListCategory.isEmpty())
FillSpinner();
else
{
AlertDialog alertDialog = new AlertDialog.Builder(ApPictureActivity.this).create();
alertDialog.setTitle(getResources().getString(R.string.errorCategoryTitle));
alertDialog.setMessage(getResources().getString(R.string.errorCategoryMessage));
//add "Ok button"
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
} });
alertDialog.show();
//log
Log.i("List category empty", "No categories");
//ApPictureActivity.this.finish();
}
}
protected Void doInBackground(Void... params) {
try{
_ListCategory = ServerCall.GetCategory();}
catch (Exception e) {
Log.i("load categories error",e.toString());
}
return null;
}
}
そして ServerCall.GetCategory メソッド:
public static List<Category> GetCategory (){
try{
Log.i("Call", "Call categories");
String url = "http://appicture.cloudapp.net/API/yoyo";
RestClient client = new RestClient(url);
//Call
client.Execute(RequestMethod.GET);
if(client.getResponseCode() == 200){
//Get the response
String response = client.getResponse();
//build list of categories
Type listType = new TypeToken<ArrayList<Category>>() {
}.getType();
List<Category> categories = new Gson().fromJson(response, listType);
Log.i("Response", response.toString());
return categories;
}
}
catch (Exception e) {
Log.i("Error", e.toString());
}
return null;
}
Logcat 例外:
07-09 09:37:49.446: E/AndroidRuntime(4322): Uncaught handler: thread main exiting due to uncaught exception
07-09 09:37:49.455: E/AndroidRuntime(4322): java.lang.NullPointerException
07-09 09:37:49.455: E/AndroidRuntime(4322): at ApPicture.Android.ApPictureActivity$CallCategory.onPostExecute(ApPictureActivity.java:299)
07-09 09:37:49.455: E/AndroidRuntime(4322): at ApPicture.Android.ApPictureActivity$CallCategory.onPostExecute(ApPictureActivity.java:1)
07-09 09:37:49.455: E/AndroidRuntime(4322): at android.os.AsyncTask.finish(AsyncTask.java:417)
07-09 09:37:49.455: E/AndroidRuntime(4322): at android.os.AsyncTask.access$300(AsyncTask.java:127)
07-09 09:37:49.455: E/AndroidRuntime(4322): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
07-09 09:37:49.455: E/AndroidRuntime(4322): at android.os.Handler.dispatchMessage(Handler.java:99)
07-09 09:37:49.455: E/AndroidRuntime(4322): at android.os.Looper.loop(Looper.java:123)
07-09 09:37:49.455: E/AndroidRuntime(4322): at android.app.ActivityThread.main(ActivityThread.java:4363)
07-09 09:37:49.455: E/AndroidRuntime(4322): at java.lang.reflect.Method.invokeNative(Native Method)
07-09 09:37:49.455: E/AndroidRuntime(4322): at java.lang.reflect.Method.invoke(Method.java:521)
07-09 09:37:49.455: E/AndroidRuntime(4322): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
07-09 09:37:49.455: E/AndroidRuntime(4322): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
07-09 09:37:49.455: E/AndroidRuntime(4322): at dalvik.system.NativeStart.main(Native Method)
このコードが正しい URL で機能していることを確認しました。したがって、実装の問題ではありません。例外がキャッチされない可能性があります。
よろしく。