社区首页 >问答首页 >全局对象被修改,而它不应该被修改

全局对象被修改,而它不应该被修改
EN

Stack Overflow用户
提问于 2013-03-14 04:58:11
回答 2查看 66关注 0票数 0

我已经扩展了Application类,允许我存储应用程序范围内的对象。其中一个对象是从应用程序本地的JSON文件读取的JSONObjectEnvConfig是我编写定制类,它只返回JSON配置对象。这个ExtendedBase类使我可以在全局范围内使用它。

我的问题是,当我在我的活动中时,我会执行以下操作来获取配置JSONObject。在它中,我在AsyncTask中获取了一个模板JSONObject(pageJSON),并对其进行了修改,并将其用作检索资源的RESTful API调用的主体。

代码语言:javascript
代码运行次数:0
复制
myApp = (ExtendedBase) getApplicationContext();
JSONConfig = myApp.getConfig();
JSONObject page = JSONConfig.getJSONObject("singlePages").getJSONObject(pageTitle);
JSONObject pageJSON = page.getJSONObject("json");

这是可行的。我从RESTful应用程序接口中获取资源,然后从自定义类中执行相同的操作。从全局可用的getApplicationContext()中获取pageJSON,在异步任务中修改pageJSON,然后再次调用RESTful API来更新资源。这是可行的。但当我再次启动该过程时(返回到活动并尝试通过获取pageJSON模板对象进行API调用以检索另一个资源),它以某种方式反映了我在进行update API调用时所做的更改。原始的全局JSONObject根本不应该更改。这就像我在更新全局可用的对象,而不是像我认为应该做的那样创建新的JSONObjects

有谁有办法解决这个问题吗?

代码语言:javascript
代码运行次数:0
复制
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;
    }
}
EN

回答 2

Stack Overflow用户

发布于 2013-03-14 05:09:16

公共类GlobalApplication扩展了应用程序{私有JSONObject globalVariable;

代码语言:javascript
代码运行次数:0
复制
 public JSONObject getGlobalInstance() {
         return globalVariable;
 }

 public void setGlobalInstance(JSONObject globalVariable) {
         this.globalVariable = globalVariable;
 }
 @Override
 public void onCreate() {
         //reinitialize variable
 }

在您的活动中设置全局值

代码语言:javascript
代码运行次数:0
复制
((GlobalApplication)getApplication()).setGlobalInstance(jsonObject);

得到这样的结果

代码语言:javascript
代码运行次数:0
复制
jsonObject=((GlobalApplication)getApplication()).getGlobalInstance();

}

像wise一样,您可以存储多个全局值并以相同的方式进行检索。

不要忘记将应用程序添加到清单文件中

代码语言:javascript
代码运行次数:0
复制
<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name="package.GlobalApplication" >

希望这能对你有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2013-03-14 05:11:05

更改getConfig() as以获取最新值,而无需再次创建应用程序实例:

代码语言:javascript
代码运行次数:0
复制
public JSONObject getConfig() {

 JSONConfig = envConfig.getEnvConfig(this);//call here instead of inside onCreate()
 return JSONConfig;
}

还要确保您没有在EnvConfig类构造函数中进行任何API调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15401514

复制
相关文章
npm修改全局包位置
引言 .npmrc 配置文件 C:\Users\yiyun\.npmrc 其实 全局包 位置就在此配置文件,可以直接修改此配置文件,或通过命令 registry=https://registry.npm.taobao.org prefix=E:\npm-global cache=E:\npm-cache 全局包默认位置 npm root -g npm config ls # npm config list npm config get cache npm config ls -l 修改全局包
yiyun
2022/04/01
1.8K0
npm修改全局包位置
「R」R 修改全局选项
R语言的选项设定可以从全局范围影响当前的会话,我们调用getOption()查看选项值,使用options()修改它。
王诗翔呀
2020/07/06
5080
WordPress全局字体修改详细教程
有很多时候,Wordpress 的字体不能让我们满意,这个时候我们就可以通过一些方法来修改主题的默认字体,来达到我们想要的效果。
回忆大大
2021/08/09
5.6K3
WordPress全局字体修改详细教程
有很多时候,Wordpress 的字体不能让我们满意,这个时候我们就可以通过一些方法来修改主题的默认字体,来达到我们想要的效果。
Qwe7
2022/01/24
1.9K0
滚动条样式全局修改
滚动条样式是当前浏览器的样式,以webkit内核为准。改的全局样式。不单单是elementUI样式
全栈程序员站长
2022/09/07
1.6K0
JS利用函数修改全局变量
现在博客系统的评论遇到一个问题,用户点击“最后一页”链接之后就自动调取最后一页的资料来显示。
SAP梦心
2022/05/10
5K0
python 全局变量引用与修改
使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字。如:
py3study
2020/01/14
1.9K0
修改npm全局安装的位置 原
不小心删除了C:\Users\Administrator\AppData\Roaming\npm 的Roaming下面的npm ,然后npm安装怎么都无效,这时候把npm 与npm-cache都删除再重新安装node js就好了(安装nodejs的时候选第四个)
tianyawhl
2019/04/04
2.1K0
修改npm全局安装模式的路径
刚学nodeJS不久,很纳闷为什么全局安装的模块在 'node安装目录/node_modules‘ 中没找到!后来仔细看了下安装成功后的信息,才发现原来是自动安装在C盘了,天啊,C盘肯定不能来放这些东西的啦,于是呢就上网百度了一下。
bear_fish
2018/09/19
1.5K0
修改npm全局安装模式的路径
【MATLAB】基本绘图 ( 修改对象属性 | 修改坐标轴属性 | 修改坐标轴范围 | 修改文字大小 | 修改刻度 | 修改线属性 )
在 【MATLAB】基本绘图 ( 句柄值 | 对象句柄值获取 | 创建对象时获取句柄值 | 函数获取句柄值 | 获取 / 设置 对象属性 | 获取对象属性 )二、获取对象属性 2、获取 坐标轴 对象属性 博客章节 , 获取 gca 坐标轴对象属性时 , 有
韩曙亮
2023/03/29
3.6K0
【MATLAB】基本绘图 ( 修改对象属性 | 修改坐标轴属性 | 修改坐标轴范围 | 修改文字大小 | 修改刻度 | 修改线属性 )
网站被篡改_网页内容修改
NetCMS的相关新闻显示是根据新闻的Tag来查找所有具有相同的Tag的新闻,然后将其显示的。如,某条新闻的Tag是“工资|奖金”,那么会用下列SQL语句来查找具有相同Tag的新闻:
全栈程序员站长
2022/11/11
2.2K0
小程序修改数组中对象的某个值或者修改对象值
setData的时候要修改的值是不需要加this.data.xxx的,直接xxx,
蓓蕾心晴
2018/07/24
6.2K0
shell脚本 检查文件是否被修改
1.进行检测目录的添加,可以多个目录 2.添加定时任务,可以一分钟一次,有改动会输出改动情况 #!/bin/bash #2020-3-14 #监测文件是否被修改脚本 #监测目录 dir_file=(/etc) file_list=/usr/local/file_list.txt error_file=/usr/local/error_list.txt display_path() { for i in `ls` do if [[ -d $i ]];then             cd $i    
陈不成i
2021/06/23
2.3K0
hibernateTemplate update 只更新被修改字段
如果你用hibernateTemplate操作数据库,感觉的确很省代码,一行代码解决数据库增改删查,但当你做到一个功能只更新一个字段,你就有点懵逼了,怎么试就是不行,总的就是下面的异常报错。
全栈程序员站长
2022/09/07
7850
stl map key 可以被修改吗?
stl map key 可以被修改吗 不可以修改 map节点存储key是const std::pair<const char, int> 2 stl :map 插入相同key组成的make_pa
程序员小王
2018/04/13
1.5K0
stl map key 可以被修改吗?
PHP面向对象-对象属性的访问和修改
可以使用对象实例的箭头运算符 -> 来访问对象属性。这个运算符后面跟着属性名。例如,如果有一个名为 $person 的对象实例,它有一个名为 $name 的属性,那么可以这样访问它:
堕落飞鸟
2023/04/27
2.1K0
npm/yarn ---- 全局依赖安装路径的查询和修改
NPM 1. 查询 npm 安装依赖的全局路径 npm prefix -g 2. 修改 npm 全局安装位置 npm config set prefix "D:\nodejs\node_global" 3. 修改 npm 全局 cache 位置 npm config set cache "D:\nodejs\node_cache" npm 修改后安装 YARN 1. 查询 yarn 安装依赖的全局路径 yarn global bin 2. 修改 yarn 全局 bin 位置 yarn
Rattenking
2021/09/07
5K0
Promise如何修改对象的状态
在JavaScript中,Promise对象的状态由其内部的resolve和reject函数来改变。通过调用resolve函数,Promise对象的状态从pending(进行中)变为fulfilled(已完成),并传递一个值作为结果;通过调用reject函数,Promise对象的状态从pending(进行中)变为rejected(已失败),并传递一个错误作为原因。
堕落飞鸟
2023/05/23
9200
修改资源对象后Pod自动重建
用户定义Kubernetes的资源对象(例如Deployment、Daemonset 等),配置文件以configmap定义,通过Volumemounts进行挂载 到Pod里,配置文件修改以后,服务可以自动reload加载更新配置。
mervinwang
2021/06/02
1.2K0
实现不可修改的Javascript对象属性
Javascipt的数据属性有一个名为Writable的特征, 可以用于设置属性值是否可以被修改
zhaoolee
2019/10/25
1.6K0
实现不可修改的Javascript对象属性

相似问题

局部修改变量,而不是全局修改

344

对象被修改,但数组没有修改。

10

最终参考对象被修改

44

Javascript Web Worker修改全局对象

121

当检索到的对象被修改时,应用程序对象被修改

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文