2015-12-21 28 views
3

我有一個變量,我從共享首選項時,我加載應用程序。Android/Java的理解,當我能夠使用/覆蓋變量

我首先初始化變量

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 
} 

現在,經過直接,如果聲明,我有一個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"; 
    } 
}); 

如果我要刪除final那麼我不能在if語句中使用該變量。

我是新來的Java,所以這應該是一個簡單的答案,我只是不知道我在做什麼錯誤的組合。

回答

2

你應該讓你的變量成爲非最終字段。然後,您可以在onClick(以及該課程的所有其他方法)中使用它,並根據需要重新分配它。

private String camera_type; // member variable 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    camera_type = booth_preferences.getString("camera_key", "back"); 
0

可以使大量

String[] cameraType = new String[0]; 

一個元素,並使用

if("some_String".equals(cameraType[0])){ 
//do smth 
} 
2

你不能重新分配的價值最終的變數。爲了使它在onClick方法中可訪問,您可以將camera_type設置爲您活動的成員變量。