我在我的应用中添加了标签活动。在每个选项卡中,我都有一个(开关)按钮,通过单击可以打开和关闭。当我移动到另一个标签并回到同一个标签时,它会下降。我希望保持其价值,以便在切换到其他活动时不会改变。
按钮的布局(XML)代码:
<Button
android:id="@+id/b_btnlight"
android:layout_width="65dp"
android:layout_height="30dp"
android:text="ON"
android:background="@color/red"
android:textColor="@color/black"
android:layout_marginLeft="220dp"
android:layout_marginTop="500dp"/>
相关标签活动:
bbtnlight = (Button) rootView.findViewById(R.id.b_btnlight);
bbtnlight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(bbtnlight.getText()=="ON")
{bbtnlight.setText("OFF");
bbtnlight.setBackgroundColor(getResources().getColor(R.color.green));}
else
{bbtnlight.setText("ON");
bbtnlight.setBackgroundColor(getResources().getColor(R.color.red));}
}
});
当按钮为OFF时,其颜色为红色,文本等于ON,反之亦然。对于其他标签活动,我有同样的事情。如果你能在这种情况下帮助我,我感激不尽。感谢。
答案 0 :(得分:2)
在Android中,如果活动不在屏幕上,您将无法确定活动何时会内存不足。如果您希望应用记住值,则必须找到永久或半永久存储它们的地方,即使用户切换到另一个活动,另一个应用,关闭屏幕,甚至关闭设备。您不能认为仅仅因为屏幕上的活动不再是用户完成的。例如,如果用户在使用您的应用时接到电话,他们可能希望返回他们离开的地方。
有些地方可以在Android中存储持久性数据。以下是前2名:
答案 1 :(得分:1)
一个选项是创建一个带有静态变量的类,以便在应用程序生存期内保存该值
public class GlobalVars {
public static boolean isLightOn;
}
通过这种方式,您可以从应用程序的任何位置获取和设置GlobalVars.isLightOn。当您使用开关时将其设置为true,当您返回时,如果它是真或假,请检查此变量。 当您关闭应用程序时,变量将重置为false
另一种选择是使用SharedPreferences
存储您的数据,这样当您关闭应用时,如果再次打开数据,数据就会存在
答案 2 :(得分:1)
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();
存储数据
editor.putBoolean("key_name", true); // Storing boolean - true/false
editor.putString("key_name", "string value"); // Storing string
editor.putInt("key_name", "int value"); // Storing integer
editor.putFloat("key_name", "float value"); // Storing float
editor.putLong("key_name", "long value"); // Storing long
editor.commit(); // commit changes
检索数据
pref.getString("key_name", null); // getting String
pref.getInt("key_name", null); // getting Integer
pref.getFloat("key_name", null); // getting Float
pref.getLong("key_name", null); // getting Long
pref.getBoolean("key_name", null); // getting boolean
答案 3 :(得分:1)
您只需在 SharedPreferences
中进行设置即可SharedPreferences pref = getSharedPreferences(MODE_PRIVATE);
Editor editor = pref.edit();
onCreate(){
checkButton();
bbtnlight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkButton();
}
});
}
private void checkButton() {
if (pref.getBoolean("is_button_checked", false)) {
bbtnlight.setText("ON");
bbtnlight.setBackgroundColor(getResources().getColor(R.color.red));
editor.putBoolean("is_button_checked", true);
} else {
bbtnlight.setText("OFF");
bbtnlight.setBackgroundColor(getResources().getColor(R.color.green));
editor.putBoolean("is_button_checked", false);
}
}