Android 无法从共享首选项中获取布尔值

Android 无法从共享首选项中获取布尔值,android,checkbox,sharedpreferences,Android,Checkbox,Sharedpreferences,我有一个复选框,我希望它在默认情况下被取消选中。i、 这是假的。 在手动选中复选框时,即如果选中复选框,它将在另一个类中执行某些操作 我尝试使用SharedReference保存复选框的状态,但是当我尝试使用GetBoolean在另一个类中获取复选框值时,我没有得到保存的值 我的布局xml文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.co

我有一个复选框,我希望它在默认情况下被取消选中。i、 这是假的。 在手动选中复选框时,即如果选中复选框,它将在另一个类中执行某些操作

我尝试使用SharedReference保存复选框的状态,但是当我尝试使用GetBoolean在另一个类中获取复选框值时,我没有得到保存的值

我的布局xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Number of Circle" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

    </EditText>

     <CheckBox
        android:id="@+id/chkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/enable_touch_checkBox"
        />


    <Button
        android:id="@+id/buttonAlert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="131dp"
        android:text="save" 
        />
</LinearLayout>
我的服务课

package de.vogella.android.wallpaper;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.animation.AnimatorSet.Builder;
import android.app.ActionBar.LayoutParams;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.net.Uri;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.service.wallpaper.WallpaperService;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MyWallpaperService extends WallpaperService {

    private final String TAG = getClass().getSimpleName();
    private static final String PREF_NAME = "wallpaper";
    //private PrefManager pref = new PrefManager(getApplicationContext());



    @Override
    public Engine onCreateEngine() {
        Log.i( TAG, "onCreateEngine" );
        return new MyWallpaperEngine();
    }

    private class MyWallpaperEngine<YourActivity> extends Engine {
        private final Handler handler = new Handler();
        private final Runnable drawRunner = new Runnable() {
            @Override
            public void run() {
                draw();
            }

        };
        private List<MyPoint> circles;
        private Paint paint = new Paint();
        Bitmap image = null;
        private int width;
        int height;
        private boolean visible = true;
        private int maxNumber;
        private int maxNumber2;
        private boolean touchEnabled;
        private boolean touchEnabled2;
        SharedPreferences prefs = null;


        int fatchDataSize = 10;
        ProdAdDetails []prodobj = new ProdAdDetails[fatchDataSize]; 
        HashMap<Integer,String> map = new HashMap<Integer,String>();
        Canvas canvas = null;
        public MyWallpaperEngine() 
{
            pref= new PrefManager(getApplicationContext());
            //prefs=PreferenceManager.getDefaultSharedPreferences(MyWallpaperService.this);
                    prefs = getSharedPreferences(PREF_NAME,0);

            touchEnabled = prefs.getBoolean("Box",false);




                    }

        @Override
        public void onVisibilityChanged(boolean visible) {
            this.visible = visible;
            if (visible) {
                handler.post(drawRunner);
            } else {
                handler.removeCallbacks(drawRunner);
            }
        }

        public void onSurfaceDestroyed(SurfaceHolder holder) {
            super.onSurfaceDestroyed(holder);
            this.visible = true;
            handler.removeCallbacks(drawRunner);
        }
        @Override
        public void onSurfaceChanged(SurfaceHolder holder, int format, int width,
                int height) {
            this.width = width;
            this.height = height;
            super.onSurfaceChanged(holder, format, width, height);
        }

        @Override
        public void onTouchEvent(MotionEvent event) {
            if (touchEnabled) {
                if (event.getAction() == MotionEvent.ACTION_MOVE ) 
                 {                        
                    Toast.makeText(getApplicationContext(), "Move", Toast.LENGTH_SHORT).show();             
                 }
                 else
                 if (event.getAction() == MotionEvent.ACTION_DOWN) 
                 {                         
                    Toast.makeText(getApplicationContext(), "Down", Toast.LENGTH_SHORT).show();


                 }      

                super.onTouchEvent(event);
            } // if block end
        }


        private void draw() {
            SurfaceHolder holder = getSurfaceHolder();
            //Canvas canvas = null;
            try {
                canvas = holder.lockCanvas();
                if (canvas != null) {
                    if (circles.size() >= maxNumber2) {
                        circles.clear();
                        map = new HashMap<Integer,String>();
                    }
                    int x = (int) (width * Math.random());
                    int y = (int) (height * Math.random());

                    circles.add(new MyPoint(null, String.valueOf(circles.size() + 1), x, y));
                    drawCircles(canvas, circles);
                }
            } finally {
                if (canvas != null)
                    holder.unlockCanvasAndPost(canvas);
            }
            handler.removeCallbacks(drawRunner);
            if (visible) {
                handler.postDelayed(drawRunner, 10000);
            }
        }

        // Surface view requires that all elements are drawn completely
        private void drawCircles(Canvas canvas, List<MyPoint> circles) {
            canvas.drawColor(Color.LTGRAY);
            int i=0;
            for (MyPoint point : circles) {
                //-------------------------------
                paint.setTextSize(20);
                paint.setStrikeThruText(true);

                image = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
                canvas.drawBitmap(image, point.x, point.y, null);
                //touchEnabled = ((SharedPreferences) paint).getBoolean("touch", true);
                //=====================================
                ProdAdDetails pad = prodobj[i];//(ProdAdDetails)point.prodobj;

                String prodName      = pad.getProd_name();
                String prodDtl       = pad.getProd_details();
                String prodCompName  = pad.getProd_comp_name();
                String prodPrice     = pad.getProd_price();

                final String prodDtls = prodDtl+"\nCompany :"+prodCompName+"\nRate :"+prodPrice+"%";
                canvas.drawText(prodName, point.x+1, point.y+1, paint);
                canvas.drawBitmap(image, point.x, point.y, null);
                int key = point.x;
                System.out.println("put:::"+key);
                map.put(key, prodDtls);
            //-------------------------------
                //canvas.drawPaint(paint);
                //Circle(point.x, point.y, 40.0f, paint);
                //Toast.makeText(getApplicationContext(), prodDtls, Toast.LENGTH_SHORT).show();
                i++;
            }
        }




    }




}
package de.vogella.android.wallper;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入android.animation.AnimatorSet.Builder;
导入android.app.ActionBar.LayoutParams;
导入android.app.AlertDialog;
导入android.app.Dialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.graphics.Canvas;
导入android.graphics.Color;
导入android.graphics.Paint;
导入android.net.Uri;
导入android.os.Handler;
导入android.preference.PreferenceManager;
导入android.service.wallpar.wallperservice;
导入android.text.method.LinkMovementMethod;
导入android.util.Log;
导入android.view.contexthemewrapper;
导入android.view.MotionEvent;
导入android.view.SurfaceHolder;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.LinearLayout;
导入android.widget.TextView;
导入android.widget.Toast;
公共类MyWallperService扩展了WallperService{
私有最终字符串标记=getClass().getSimpleName();
私有静态最终字符串PREF_NAME=“wallpaper”;
//private PrefManager pref=new PrefManager(getApplicationContext());
@凌驾
公共引擎onCreateEngine(){
Log.i(标记“onCreateEngine”);
返回新引擎();
}
私有类引擎扩展引擎{
私有最终处理程序=新处理程序();
private final Runnable drawRunner=新Runnable(){
@凌驾
公开募捐{
draw();
}
};
私人名单圈;
私人油漆=新油漆();
位图图像=空;
私有整数宽度;
内部高度;
私有布尔可见=真;
私有整数maxNumber;
私有整数maxNumber2;
启用私有布尔值;
私有布尔触控2;
SharedReferences prefs=null;
int-fatchDataSize=10;
ProdAddDetails[]prodobj=新的ProdAddDetails[fatchDataSize];
HashMap=newHashMap();
Canvas=null;
公共数据库引擎()
{
pref=新的PrefManager(getApplicationContext());
//prefs=PreferenceManager.GetDefaultSharedReferences(MyWallperService.this);
prefs=getSharedReferences(PREF_名称,0);
touchEnabled=prefs.getBoolean(“框”,false);
}
@凌驾
公共无效onVisibilityChanged(布尔可见){
可见的;可见的;
如果(可见){
装卸工岗位(牵引员);
}否则{
handler.removeCallbacks(drawRunner);
}
}
表面上的公共空隙已销毁(表面持有人){
super.OnSurface(持有人);
可见=真实;
handler.removeCallbacks(drawRunner);
}
@凌驾
更改了曲面上的公共空白(曲面holder holder、整型格式、整型宽度、,
整数高度){
这个。宽度=宽度;
高度=高度;
super.onSurfaceChanged(支架、格式、宽度、高度);
}
@凌驾
公共事件(MotionEvent){
如果(触摸已启用){
if(event.getAction()==MotionEvent.ACTION\u MOVE)
{                        
Toast.makeText(getApplicationContext(),“Move”,Toast.LENGTH\u SHORT.show();
}
其他的
if(event.getAction()==MotionEvent.ACTION\u向下)
{                         
Toast.makeText(getApplicationContext(),“Down”,Toast.LENGTH\u SHORT.show();
}      
超级事件(事件);
}//如果块结束
}
私人提款(){
SurfaceHolder holder=getSurfaceHolder();
//Canvas=null;
试一试{
canvas=holder.lockCanvas();
if(canvas!=null){
if(circles.size()>=maxNumber2){
圆圈。清除();
map=新的HashMap();
}
intx=(int)(宽度*Math.random());
int y=(int)(高度*Math.random());
add(新的MyPoint(null,String.valueOf(circles.size()+1),x,y));
画圈(画布、圆圈);
}
}最后{
if(canvas!=null)
支架。解锁画布和立柱(画布);
}
handler.removeCallbacks(drawRunner);
如果(可见){
handler.postDelayed(drawRunner,10000);
}
}
//“曲面视图”要求完全绘制所有图元
私有void drawCircles(画布、列表圆){
画布。drawColor(Color.LTGRAY);
int i=0;
用于(MyPoint点:圆){
//-------------------------------
油漆.尺寸(20);
油漆。设置TRIKETHRUTEXT(正确);
image=BitmapFactory.decodeResource(getResources(),R.drawable.ic_启动器);
画布.drawBitmap(图像,点.x,点.y,空);
package de.vogella.android.wallpaper;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.animation.AnimatorSet.Builder;
import android.app.ActionBar.LayoutParams;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.net.Uri;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.service.wallpaper.WallpaperService;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MyWallpaperService extends WallpaperService {

    private final String TAG = getClass().getSimpleName();
    private static final String PREF_NAME = "wallpaper";
    //private PrefManager pref = new PrefManager(getApplicationContext());



    @Override
    public Engine onCreateEngine() {
        Log.i( TAG, "onCreateEngine" );
        return new MyWallpaperEngine();
    }

    private class MyWallpaperEngine<YourActivity> extends Engine {
        private final Handler handler = new Handler();
        private final Runnable drawRunner = new Runnable() {
            @Override
            public void run() {
                draw();
            }

        };
        private List<MyPoint> circles;
        private Paint paint = new Paint();
        Bitmap image = null;
        private int width;
        int height;
        private boolean visible = true;
        private int maxNumber;
        private int maxNumber2;
        private boolean touchEnabled;
        private boolean touchEnabled2;
        SharedPreferences prefs = null;


        int fatchDataSize = 10;
        ProdAdDetails []prodobj = new ProdAdDetails[fatchDataSize]; 
        HashMap<Integer,String> map = new HashMap<Integer,String>();
        Canvas canvas = null;
        public MyWallpaperEngine() 
{
            pref= new PrefManager(getApplicationContext());
            //prefs=PreferenceManager.getDefaultSharedPreferences(MyWallpaperService.this);
                    prefs = getSharedPreferences(PREF_NAME,0);

            touchEnabled = prefs.getBoolean("Box",false);




                    }

        @Override
        public void onVisibilityChanged(boolean visible) {
            this.visible = visible;
            if (visible) {
                handler.post(drawRunner);
            } else {
                handler.removeCallbacks(drawRunner);
            }
        }

        public void onSurfaceDestroyed(SurfaceHolder holder) {
            super.onSurfaceDestroyed(holder);
            this.visible = true;
            handler.removeCallbacks(drawRunner);
        }
        @Override
        public void onSurfaceChanged(SurfaceHolder holder, int format, int width,
                int height) {
            this.width = width;
            this.height = height;
            super.onSurfaceChanged(holder, format, width, height);
        }

        @Override
        public void onTouchEvent(MotionEvent event) {
            if (touchEnabled) {
                if (event.getAction() == MotionEvent.ACTION_MOVE ) 
                 {                        
                    Toast.makeText(getApplicationContext(), "Move", Toast.LENGTH_SHORT).show();             
                 }
                 else
                 if (event.getAction() == MotionEvent.ACTION_DOWN) 
                 {                         
                    Toast.makeText(getApplicationContext(), "Down", Toast.LENGTH_SHORT).show();


                 }      

                super.onTouchEvent(event);
            } // if block end
        }


        private void draw() {
            SurfaceHolder holder = getSurfaceHolder();
            //Canvas canvas = null;
            try {
                canvas = holder.lockCanvas();
                if (canvas != null) {
                    if (circles.size() >= maxNumber2) {
                        circles.clear();
                        map = new HashMap<Integer,String>();
                    }
                    int x = (int) (width * Math.random());
                    int y = (int) (height * Math.random());

                    circles.add(new MyPoint(null, String.valueOf(circles.size() + 1), x, y));
                    drawCircles(canvas, circles);
                }
            } finally {
                if (canvas != null)
                    holder.unlockCanvasAndPost(canvas);
            }
            handler.removeCallbacks(drawRunner);
            if (visible) {
                handler.postDelayed(drawRunner, 10000);
            }
        }

        // Surface view requires that all elements are drawn completely
        private void drawCircles(Canvas canvas, List<MyPoint> circles) {
            canvas.drawColor(Color.LTGRAY);
            int i=0;
            for (MyPoint point : circles) {
                //-------------------------------
                paint.setTextSize(20);
                paint.setStrikeThruText(true);

                image = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
                canvas.drawBitmap(image, point.x, point.y, null);
                //touchEnabled = ((SharedPreferences) paint).getBoolean("touch", true);
                //=====================================
                ProdAdDetails pad = prodobj[i];//(ProdAdDetails)point.prodobj;

                String prodName      = pad.getProd_name();
                String prodDtl       = pad.getProd_details();
                String prodCompName  = pad.getProd_comp_name();
                String prodPrice     = pad.getProd_price();

                final String prodDtls = prodDtl+"\nCompany :"+prodCompName+"\nRate :"+prodPrice+"%";
                canvas.drawText(prodName, point.x+1, point.y+1, paint);
                canvas.drawBitmap(image, point.x, point.y, null);
                int key = point.x;
                System.out.println("put:::"+key);
                map.put(key, prodDtls);
            //-------------------------------
                //canvas.drawPaint(paint);
                //Circle(point.x, point.y, 40.0f, paint);
                //Toast.makeText(getApplicationContext(), prodDtls, Toast.LENGTH_SHORT).show();
                i++;
            }
        }




    }




}
public static String KEY="Box";
    private void savePreferences(boolean value){
        SharedPreferences sharedpreferences = getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);    
        Editor editor = sharedpreferences.edit();
        editor.putBoolean(KEY,value);
        editor.commit();
        }
SharedPreferences getpreferences = getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);   
boolean isChecked=getpreferences.getBoolean("Box",false);