0

작동하지 setChecked 그러나 3 이후에는 SwitchPreference이 선택되지 않고 토글에 대한 클릭은 아무런 효과가 없습니다 ('켜기/선택'할 수 없음).프로그래밍,</li> <li>가 <code>PreferenceGroup</code></li> </ol> <p>1과 3 잘 작동에 추가 <ol> <li>가 <code>SwitchPreference</code> 프로그래밍</li> <li>그것에 <code>setChecked(true)</code>를 설정 만들</p>에 내가 원하는

은 여기 내 PreferenceFragment :

public class MyPrefFragment extends PreferenceFragment { 
    @Override 
    public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) { 

     addPreferencesFromResource(R.xml.prefs); 

     PreferenceGroup preferenceGroup = (PreferenceGroup) findPreference("pref_cat_1"); 

     SwitchPreference switchPreference = new SwitchPreference(getActivity()); 
     switchPreference.setTitle("new"); 
     switchPreference.setChecked(true); 
     switchPreference.setDefaultValue(true); 

     switchPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(final Preference preference, final Object newValue) { 

       Toast.makeText(getActivity(), newValue.toString(), Toast.LENGTH_SHORT).show(); 

       return false; 
      } 
     }); 

     preferenceGroup.addPreference(switchPreference); 

    } 
} 

PreferenceScreen :

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

    <PreferenceCategory android:title="cat_one"> 

     <SwitchPreference 
      android:key="pref_1" 
      android:defaultValue="false" 
      android:title="fest"/> 

    </PreferenceCategory> 

    <PreferenceCategory 
     android:key="pref_cat_1" 
     android:title="category"/> 

</PreferenceScreen> 

가 어떻게 제대로 setChecked(true) SwitchPreference에 프로그램 생성 할 수 있습니까?

시험 프로젝트는 on Github입니다.

답변

1

SwitchPreference은 전환되지 않으며 클릭이 적용되지 않습니다.

내 컴퓨터에서 확인합니다. 그것을 클릭 한 후에 당신은 완전히 옳습니다. onPreferenceChange() 콜백에서 false을 반환하기 때문입니다. onPreferenceChange()

문서 :

결과 : 사실가 새 값으로 기본 설정의 상태를 업데이트합니다.

따라서 falsetrue으로 변경되었으며 예상대로 작동합니다.

편집

내가 API 25 태블릿 에뮬레이터를 실행했다. 그런 다음 API 22 에뮬레이터를 실행하면 작동하지 않습니다. API25에서 예상대로 실행됩니다. 매우 이상합니다.

+0

맞습니다. API25에서 작동합니다. 이상한 ... – FWeigl

+0

@Ascorbin은 더 낮은 API 수준에서이 작업을 수행하게 되었습니까? –

+0

@ForrestBice 아니요. – FWeigl