簡體   English   中英

如何檢索共享首選項的值以檢查條件

[英]how to retrive the value of shared preference for checking the condition

這里我有三個按鈕 是的 不是 可能是三個按鈕 我在單擊按鈕時更改了顏色並將單擊按鈕的值存儲在共享首選項中,以便在我返回按鈕時保持顏色

@Override public View getView(final int position, View convertView, ViewGroup parent) {

        if (convertView == null)
            convertView = mInflater.inflate(R.layout.invitation, null);
        eventNameTxtV = (TextView) convertView.findViewById(R.id.invitation_title);
        eventPlaceTxtV = (TextView) convertView.findViewById(R.id.invitation_place);
        eventNameTxtV.setText(eventMOs.get(position).getText());
        eventPlaceTxtV.setText(eventMOs.get(position).getPlace());

        convertView.setTag(position);
        View v = convertView.findViewById(R.id.invitation_single);

        final Button yesBtn = (Button) convertView.findViewById(R.id.yesbutton);
        final Button noBtn = (Button) convertView.findViewById(R.id.nobutton);
        final Button maybeBtn = (Button) convertView.findViewById(R.id.buttonmaybe);


        final LinearLayout eventLayout = (LinearLayout) convertView.findViewById(R.id.invitation_single);


        final LinearLayout responseLayout = (LinearLayout) convertView.findViewById(R.id.hidden);

        //Based on the user click, response will be stored



        yesBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                // highlight the button when clicked
                yesBtn.setBackgroundColor(Color.YELLOW);
                noBtn.setBackgroundColor(Color.BLUE);
                maybeBtn.setBackgroundColor(Color.BLUE);
                responseLayout.setVisibility(View.GONE);
                //If user clicks yes button in invitation response layout,response would be stored as 1 for event user
                final int response = 1;
                final long eventId = eventMOs.get(position).getEventId();
                userMO.setIsAttending(response);
                //create shared preferences here

                prefs =getActivity().getSharedPreferences("mypref", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor =prefs.edit();
                editor.putString("buttonClicked","true");
                editor.commit();

                /*SharedPreferences sharedpreferences = getActivity().getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedpreferences.edit();
                editor.putInt("clicked_btn", 1);
                editor.commit();*/
                new AsyncTask<Void, Void, String>() {
                    protected String doInBackground(Void... arg0) {
                        return userDelegate.updateEventUserRelationShipMapping(userMO, eventId);

                    }

                }.execute(null, null, null);

            }

        });

        noBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yesBtn.setBackgroundColor(Color.BLUE);
                noBtn.setBackgroundColor(Color.YELLOW);
                maybeBtn.setBackgroundColor(Color.BLUE);
                responseLayout.setVisibility(View.GONE);
                //If user clicks no button in invitation response layout,response would be stored as 0 for event user
                final int response = 0;
                final long eventId = eventMOs.get(position).getEventId();
                userMO.setIsAttending(response);

                SharedPreferences sharedpreferences = getActivity().getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedpreferences.edit();
                editor.putInt("clicked_btn", 0);
                editor.commit();

                new AsyncTask<Void, Void, String>() {
                    protected String doInBackground(Void... arg0) {
                        return userDelegate.updateEventUserRelationShipMapping(userMO, eventId);

                    }

                }.execute(null, null, null);
            }
        });
        maybeBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yesBtn.setBackgroundColor(Color.BLUE);
                noBtn.setBackgroundColor(Color.BLUE);
                maybeBtn.setBackgroundColor(Color.YELLOW);
                responseLayout.setVisibility(View.GONE);
                //If user clicks maybe button in invitation response layout,response would be stored as  for event user
                final int response = 2;
                userMO.setIsAttending(response);
                final long eventId = eventMOs.get(position).getEventId();

                SharedPreferences sharedpreferences = getActivity().getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedpreferences.edit();
                editor.putInt("clicked_btn",2);
                editor.commit();

                new AsyncTask<Void, Void, String>() {
                    protected String doInBackground(Void... arg0) {
                        return userDelegate.updateEventUserRelationShipMapping(userMO, eventId);

                    }

                }.execute(null, null, null);
            }
        });

在這里,如果我選擇了任何按鈕,則每當我返回應用程序時,我都必須保持按鈕的顏色變化。所以如何使用和檢索共享首選項值

這是當我單擊事件時一起顯示是不是按鈕的代碼

eventLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                                      switch (v.getId()) {
                        case R.id.invitation_single:
                            responseLayout.setVisibility(View.VISIBLE);
                            break;

                    }
                }


           });

SharedPreferences使您能夠存儲不同類型的數據,例如booleanint

為了完成您的任務,您可以將每個按鈕的顏色存儲在SharedPreferences 就像是:

 editor.putInt("button_one", R.color.buttone_one_selected);

請記住,當您檢索該顏色時,您必須使用以下方法解決它:

int buttonOneColor = sharedPrefs.getInt("button_one", default_value); 
int colorBackground = getResources().getColor(buttonOneColor);

您可以使用此更改按鈕的顏色...

在 onCreate 中:

SharedPreferences prefs = getSharedPreferences("myPrefs",
                Context.MODE_PRIVATE);

現在檢查存儲在首選項中的布爾值:

boolean b1_pressed = prefs.getBoolean("button1_pressed",false);

if(b1_pressed){

//code to change color of button to pressed state

}

else{

//code to change color of button to normal state

}

現在在按鈕的 onClick 方法中:

if(b1_pressed){

SharedPreferences.editor editor = prefs.edit();

editor.putBoolean("button1_pressed",false);

editor.commit();

}
else{

SharedPreferences.editor editor = prefs.edit();

editor.putBoolean("button1_pressed",true);

editor.commit();

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM