-2

解析中に1つのJavaBeanクラスセット値があります。このクラスにグローバルにアクセスするための要件ですが、インスタンスを静的に使用してそのインスタンスに値を割り当てると、nullポインタ例外が発生します。コードは次のとおりです。-

private String Responce;
private String Error;
private String Url;
private SIPModle objsip;
private VMModle objvmmodle;
private ArrayList<CustompadModle> objcmodlelist = new ArrayList<CustompadModle>();
private SettingModle objsettingmodle;
private WifiModle objwifimodle;

public String getResponce() {
    return Responce;
}
public void setResponce(String responce) {
    Responce = responce;
}
public String getError() {
    return Error;
}
public void setError(String error) {
    Error = error;
}
public ArrayList<CustompadModle> getObjcmodlelist() {
    return objcmodlelist;
}
public void setObjcmodlelist(CustompadModle objcmodlelist) {
    this.objcmodlelist.add(objcmodlelist);
}
public String getUrl() {
    return Url;
}
public void setUrl(String url) {
    Url = url;
}
public SIPModle getObjsip() {
    return objsip;
}
public void setObjsip(SIPModle objsip) {
    this.objsip = objsip;
}
public VMModle getObjvmmodle() {
    return objvmmodle;
}
public void setObjvmmodle(VMModle objvmmodle) {
    this.objvmmodle = objvmmodle;
}

public SettingModle getObjsettingmodle() {
    return objsettingmodle;
}
public void setObjsettingmodle(SettingModle objsettingmodle) {
    this.objsettingmodle = objsettingmodle;
}
public WifiModle getObjwifimodle() {
    return objwifimodle;
}
public void setObjwifimodle(WifiModle objwifimodle) {
    this.objwifimodle = objwifimodle;
}

私の要件は、globleがこのBeanクラスにglobllyにアクセスすることです。

このオブジェクトをdoinbackgroundで取得し、そのクラスの静的オブジェクトに次のように割り当てます。AsyncTask {

    ProgressDialog objprogress = new ProgressDialog(
            UserSettingConfiguration.this);
    ApplicationRequestHandler objhandler = new ApplicationRequestHandler();

    @Override
    protected void onPreExecute() {
        this.objprogress.setMessage("Please Wait While Loading...");
        this.objprogress.isShowing();
    }

    @Override
    protected ConfigurationSttingModle doInBackground(String... params) {
        objconfigsetting = objhandler.getConfigurationSetting(params[0],
                params[1], params[2], params[3]);
        return objconfigsetting;
    }

    @Override
    protected void onPostExecute(ConfigurationSttingModle result) {
        if (this.objprogress.isShowing()) {
            this.objprogress.dismiss();
        }


    }
}

そして、クラスAdvanceで次のように使用します;-

private static HashMap<String, String> SUMMARIES = new HashMap<String, String>() {

    private static final long serialVersionUID = 3055562364235868653L;

    {
        String server = UserSettingConfiguration.objconfigsetting.getObjsip().getServer();
        String displayname1 = UserSettingConfiguration.objconfigsetting.getObjsip().getUser();
        String user = UserSettingConfiguration.objconfigsetting.getObjsip().getUser();
        String password= UserSettingConfiguration.objconfigsetting.getObjsip().getPassword();

        put(FIELD_DISPLAY_NAME,displayname1);// "90901");
        put(FIELD_CALLER_ID,displayname1); //"90901");
        put(FIELD_SERVER,server);
        put(FIELD_USERNAME,user);
        put(FIELD_AUTH_ID, "207");
        put(FIELD_PASSWORD,password);
        put(FIELD_PROXY, null);
    }
};
4

1 に答える 1

1

シングルトンパターンはあなたの要件に合うと思います。

次のコードを追加する必要があります。

private static MyJavaBeanClass = null;

public static MyJavaBeanClass getInstance(){
  if(null == instance){
    instance = new MyJavaBeanClass();
  }
  return instance;
}

クラスの名前をMyJavaBeanClassに変更する必要があります。そうすれば、次のようにどこからでも呼び出すことができます。

MyJavaBeanClass.getInstance().setError("Testing");
于 2012-09-23T15:56:04.997 に答える