Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当我单击Cardview时,如何使其保持相同颜色的打开状态,直到我单击它关闭?_Android_Onclicklistener_Cardview - Fatal编程技术网

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()”