繁体   English   中英

使用共享首选项在此处单击我的卡片视图后,如何将 Enabled 设为 false

[英]how can i set Enabled false after one click on my card view here using shared preferences

在我的应用程序中实现了共享首选项,在点击 cardview 后,它不应该被再次点击已经完成了维护 cardview 颜色和文本颜色的部分,但不幸的是你仍然可以点击 cardview,我也想成为单击后使用共享首选项禁用。 换句话说,单击后禁用单击并使用共享首选项保存该状态,希望避免多次单击

这是我的代码

        mPreferences = PreferenceManager.getDefaultSharedPreferences (getContext ());
        mEditor = mPreferences.edit ();

        checkSharedPreferences ();

        //save the cardview preference

        if(cardView.isEnabled ())
        {
            //set a cardview state
            mEditor.putString (getString (R.string.cardviewsnal),"true");
            //disabling the button after one click

            mEditor.commit ();

            //save the color of the cardview
            mEditor.putString (getString (R.string.colorCardview),"#2b43f");
            mEditor.commit ();

            //save the textcolor pf the cardview
            mEditor.putString (getString (R.string.textcolorsnal),"#ffffff");
            mEditor.commit ();
        } else
        {
            //set a cardview state
            mEditor.putString (getString (R.string.cardviewsnal),"false");
            //disabling the button after one click
            cardView.setEnabled (false);
            mEditor.commit ();

            //save the color of the cardview
            mEditor.putString (getString (R.string.colorCardview),"#ffffff");
            mEditor.commit ();

            //save the textcolor pf the cardview
            mEditor.putString (getString (R.string.textcolorsnal),"#2b434f");
            mEditor.commit ();

        }






       //setting the click listener to send the request to specific section api anf return response

       cardView.setOnClickListener (new View.OnClickListener () {
           @Override
           public void onClick(View v) {
               if(cardView.getCardBackgroundColor ().getDefaultColor () ==-1 || textView.getTextColors ().getDefaultColor () ==-1)
               {
                   //change background color
                   cardView.setCardBackgroundColor (Color.parseColor ("#2b434f"));
                   textView.setTextColor (Color.parseColor ("#ffffff"));
                   Toast.makeText (getActivity (),"Request Sent to SNAL",Toast.LENGTH_LONG).show ();
                   cardView.setEnabled (false);




               }
               else {

                   cardView.setCardBackgroundColor (Color.parseColor ("#ffffff"));
                   textView.setTextColor (Color.parseColor ("#2b434f"));




               }

           }
       });
 /**
     * *Check the shared preferences and set them accordingly
     */
    private void checkSharedPreferences()
{
    String cardviewsnal = mPreferences.getString (getString (R.string.cardviewsnal),"false");
    String colorCardview = mPreferences.getString (getString (R.string.colorCardview),"#ffffff");
    String textcolorsnal = mPreferences.getString (getString (R.string.textcolorsnal),"#2b434f");

    if(cardviewsnal.equals ("false")){
        cardView.setEnabled (true);
    }
    else
    {
        cardView.setEnabled (true);
    }

    if(colorCardview.equals ("#ffffff"))
    {
        cardView.setCardBackgroundColor (Color.parseColor ("#ffffff"));
    }
    else
    {
        cardView.setCardBackgroundColor (Color.parseColor ("#2b434f"));
    }

    if(textcolorsnal.equals ("#2b434f"))
    {
        textView.setTextColor (Color.parseColor ("#2b434f"));
    }
    else {
        textView.setTextColor (Color.parseColor ("#ffffff"));
    }
}

您可以简单地编辑 onClickListener 中的 onClick 方法:

@Override
public void onClick(View v) {
    if(cardView.isEnabled()) {
        cardView.setEnabled(false); 
        // do other things like writing to SharedPreferences and changing bg colors.
    } else {
        // set background colors 
        cardView.setCardBackgroundColor (Color.parseColor ("#ffffff"));
        textView.setTextColor (Color.parseColor ("#2b434f"));
    }
}

我认为这会奏效。 另外,如果在 checkPreferences 方法中从内存中读取了 cardView,您的意思是不是要禁用它?

if(cardviewsnal.equals ("false")){
    cardView.setEnabled (false); // was cardView.setEnabled(true) in your code
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM