Application
アプリケーション全体のオブジェクトを格納できるようにクラスを拡張しました。これらのオブジェクトの 1 つはJSONObject
、アプリに対してローカルな JSON ファイルから読み込まれる です。これEnvConfig
は、JSON 構成オブジェクトを返すだけの、私が作成したカスタム クラスです。このExtendedBase
クラスにより、グローバルに利用できるようになります。
私の問題は、私が自分の活動をしているときに、 config を取得するために次のことを行うことですJSONObject
。その中でテンプレートを取得JSONObject(pageJSON)
し、AsyncTask
それを変更して RESTful API 呼び出しの本文として使用し、リソースを取得します。
myApp = (ExtendedBase) getApplicationContext();
JSONConfig = myApp.getConfig();
JSONObject page = JSONConfig.getJSONObject("singlePages").getJSONObject(pageTitle);
JSONObject pageJSON = page.getJSONObject("json");
それはうまくいきます。RESTful API からリソースを取得し、カスタム クラスから同じことを行います。pageJSON
グローバルに利用可能な から を取得し、非同期タスクgetApplicationContext()
で MODIFYpageJSON
を実行し、別の RESTful API 呼び出しを行ってリソースを更新します。これは機能します。しかし、プロセスを最初からやり直すと (アクティビティに戻り、pageJSON
テンプレート オブジェクトを取得して別のリソースを取得するために API 呼び出しを実行しようとすると)、更新 API 呼び出しを行ったときに行った変更が何らかの形で反映されます。元のグローバルJSONObject
はまったく変更しないでください。グローバルに利用可能なオブジェクトを更新しているJSONObjects
ようで、そうすべきだと思うように新しいオブジェクトを作成していません。
誰でもこれを修正する方法の手がかりを持っていますか?
import org.json.JSONObject;
import android.app.Application;
public class ExtendedBase extends Application {
private EnvConfig envConfig;
private JSONObject JSONConfig;
public static Record record = null;
public static Boolean hasSavedRecord = false;
@Override
public void onCreate() {
envConfig = new EnvConfig();
JSONConfig = envConfig.getEnvConfig(this);
super.onCreate();
}
public JSONObject getConfig() {
return JSONConfig;
}
public void setRecord(Record mRecord){
this.record = mRecord;
}
public Record getRecord(){
return record;
}
}