加载应用程序时,我有一个从共享首选项中获取的变量.
我首先初始化变量
protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final String camera_type = booth_preferences.getString("camera_key", "back");
然后下线,我得到那个变量并对其进行处理
if(camera_type.equals("front")){ //do something} else if(camera_type.equals("ext")){ //do something} else { //do something}
现在,在该if语句之后,我有一个onclick侦听器,该监听器应该更改和更新该首选项.
camera_button_front.setonClickListener(new VIEw.OnClickListener() { public voID onClick(VIEw v) { //do something edit_preferences.putString(camera_key, "front").commit(); }});camera_button_back.setonClickListener(new VIEw.OnClickListener() { public voID onClick(VIEw v) { //do something edit_preferences.putString(camera_key, "back").commit(); }});camera_button_ext.setonClickListener(new VIEw.OnClickListener() { public voID onClick(VIEw v) { //do something edit_preferences.putString(camera_key, "ext").commit(); }});
但是,当我尝试更改变量camera_type时,出现错误,提示“无法为最终变量’camera_type’赋值”.
camera_button_ext.setonClickListener(new VIEw.OnClickListener() { public voID onClick(VIEw v) { //do something edit_preferences.putString(camera_key, "ext").commit(); camera_type = "ext"; }});
我曾经在onclick之后恢复过该变量,希望它会完全覆盖该变量.
camera_button_ext.setonClickListener(new VIEw.OnClickListener() { String camera_type; public voID onClick(VIEw v) { //do something edit_preferences.putString(camera_key, "ext").commit(); camera_type = "ext"; }});
如果要删除最终版本,则无法在if语句中使用该变量.
我是Java的新手,所以这应该是一个简单的答案,我只是不确定我在做哪种错误组合.
解决方法:
您应该将变量设为非最终字段.然后,您可以在onClick(以及该类的所有其他方法)中使用它,也可以根据需要重新分配它.
private String camera_type; // member variableprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); camera_type = booth_preferences.getString("camera_key", "back");
总结 以上是内存溢出为你收集整理的我可以使用/覆盖变量时了解Android / Java全部内容,希望文章能够帮你解决我可以使用/覆盖变量时了解Android / Java所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)