在共享首选项上使用boolean的Android问题

时间:2014-11-27 08:13:54

标签: android boolean sharedpreferences

在共享首选项上使用布尔值的Android问题

SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);
boolean isSlide=spref.getBoolean("SLIDE_SHOW",false);   

//in isSlide am getting the right value but the if statement is not working

if(isSlide==true){
//if true the page will slide but it works in false too
}

我试过这个链接Issue with boolean on shared preferences,但答案不明确

设置代码:

  <PreferenceCategory android:title="Slide Show" >
       <CheckBoxPreference android:title="Slide Show" android:key="SLIDE_SHOW" />
    </PreferenceCategory> 

2 个答案:

答案 0 :(得分:0)

您可能想要检查您的SharedPreference变量是否处于活动状态。这是关于如何设置SharedPreference的示例。

写入SharedPreference:

SharedPreferences prefs = getSharedPreferences("myPref", 0); 
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("myBool", true);
editor.commit();

从SharedPreference中读取:

SharedPreferences prefs = getSharedPreferences("myPref", 0); 
if (prefs.getBoolean("myBool", false)) { //myBool is true; }

答案 1 :(得分:0)

抱歉,我不会正确发布问题

问题不是首选它返回正确的值问题在处理程序中,用于根据首选项返回的值滑动viewpager

处理程序正在运行,即使活动被杀死,代码解决了我的问题

SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);
boolean isSlide=spref.getBoolean("SLIDE_SHOW",false);   

if(isSlide==true)
{
SlideShowTimer();
}



 public void SlideShowTimer()
 {
                    mFilterTask = new Runnable() {
                         @Override
                         public void run() {
                             int i=0;
                             itemPosition = viewPager.getCurrentItem() + 1;
                            if(itemPosition!=10)
                            {
                                  if(i <= adapter.getCount()-1)
                                    {
                                     viewPager.setCurrentItem(itemPosition,true);
                                     mHandler.postDelayed(mFilterTask, 3000);
                                        i++;
                                    }                               
                            }
                            else
                            {
                                //ViewPagerAdapter.mediaPlayer.stop();      
                                ViewPagerActivity.this.finish();
                            }    

                         }
                    };
                    mHandler.removeCallbacks(mFilterTask);                          
                    mHandler.postDelayed(mFilterTask,3000);
                }
               @Override
                  public void onDestroy(){
                       super.onDestroy();
                       mHandler.removeCallbacks(mFilterTask);
     }