0

この問題について誰か助けてください。フラグメントに SharedPreference の変更があるたびに、AsyncTask を呼び出しています。

public class UbiSavePreferenceTask extends AsyncTask {

    public final AsyncTask<JSONObject, Integer, Boolean> parallelExecute(JSONObject pref) {
    return parallelExecute(pref);
}

私のフラグメントで

emailNotificationPref.setOnPreferenceChangeListener(新しい OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference,Object newValue) {
            JSONObject json = new JSONObject();
            try {
                json.put("Email", newValue);
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            UbiSavePreferenceTask savePref = new UbiSavePreferenceTask(mContext);
            savePref.parallelExecute(json);

            return true;

        }

});

しかし、非同期タスクの parallelExecute メソッドが無限ループに入るため、stackOverflowError が発生します。このエラーから抜け出す方法はありますか。私にお知らせください。

4

1 に答える 1

1

メソッドparallelExecuteは自分自身を呼び出すので、無限ループに入るのが普通です!

public final AsyncTask<JSONObject, Integer, Boolean> parallelExecute(JSONObject pref) {
    return parallelExecute(pref); // <--- here the method calls itself!
}

これが役立つことを願っています!

于 2013-09-26T09:07:22.863 に答える