Android 当我单击Cardview时,如何使其保持相同颜色的打开状态,直到我单击它关闭?
我有一个卡片视图,上面有一个点击式监听器。当我点击它时,卡片视图的颜色会发生变化,这意味着它已打开。但是,当我进行任何其他活动时,卡片视图的颜色会发生变化。我不想改变那种颜色。帮帮我。 卡片查看代码Android 当我单击Cardview时,如何使其保持相同颜色的打开状态,直到我单击它关闭?,android,onclicklistener,cardview,Android,Onclicklistener,Cardview,我有一个卡片视图,上面有一个点击式监听器。当我点击它时,卡片视图的颜色会发生变化,这意味着它已打开。但是,当我进行任何其他活动时,卡片视图的颜色会发生变化。我不想改变那种颜色。帮帮我。 卡片查看代码 private void setToggleEvent(GridLayout mainGrid) { final CardView bulb=(CardView)mainGrid.getChildAt(0); bulb.setCardBackgroundColor(Col
private void setToggleEvent(GridLayout mainGrid) {
final CardView bulb=(CardView)mainGrid.getChildAt(0);
bulb.setCardBackgroundColor(Color.parseColor("#404040"));
bulb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(bulb.getCardBackgroundColor().getDefaultColor()!=Color.parseColor("#FFD100"))
{
bulb.setCardBackgroundColor(Color.parseColor("#FFD100"));
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("BULB");
myRef.setValue("1");
}
else
{
bulb.setCardBackgroundColor(Color.parseColor("#404040"));
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("BULB");
myRef.setValue("0");
}
}
});
试试这个:
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sharedPreferences.edit();
String color = sharedPreferences.getString("MY_KEY", "#fcfcfc");//#fcfcfc is defualt value!
bulb.setCardBackgroundColor(Color.parseColor(color));
bulb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (bulb.getCardBackgroundColor().getDefaultColor() != Color.parseColor("#fcfcfc")) {
bulb.setCardBackgroundColor(Color.parseColor("#fcfcfc"));
sharedPreferences.edit().putString("MY_KEY", "#fcfcfc").apply();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("BULB");
myRef.setValue("1");
} else {
bulb.setCardBackgroundColor(Color.parseColor("#404040"));
sharedPreferences.edit().putString("MY_KEY", "#404040").apply();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("BULB");
myRef.setValue("0");
}
}
});
试试这个:
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sharedPreferences.edit();
String color = sharedPreferences.getString("MY_KEY", "#fcfcfc");//#fcfcfc is defualt value!
bulb.setCardBackgroundColor(Color.parseColor(color));
bulb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (bulb.getCardBackgroundColor().getDefaultColor() != Color.parseColor("#fcfcfc")) {
bulb.setCardBackgroundColor(Color.parseColor("#fcfcfc"));
sharedPreferences.edit().putString("MY_KEY", "#fcfcfc").apply();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("BULB");
myRef.setValue("1");
} else {
bulb.setCardBackgroundColor(Color.parseColor("#404040"));
sharedPreferences.edit().putString("MY_KEY", "#404040").apply();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("BULB");
myRef.setValue("0");
}
}
});
使用SharedReferences保存您的卡状态。当您转到另一个活动并再次在
卡视图活动中返回时,该活动将再次创建并从一开始加载。因此,在这里,您必须使用SharedReference
保持状态,并在将颜色设置到卡片视图之前添加检查。您是否有任何代码?使用SharedReferences保存您的卡片状态。当您转到另一个活动并再次返回卡片视图活动时,该活动将再次创建并从开始因此,在这里,您必须使用SharedPrefernce
维护状态,并在将颜色设置到卡视图之前添加检查。您有任何代码吗?在上下文中获取错误,错误是“尝试在空对象引用上调用虚拟方法'java.lang.String android.content.context.getPackageName()”在上下文中获取错误,错误为“尝试在空对象引用上调用虚拟方法'java.lang.String android.content.context.getPackageName()”