Como definir o valor padrão de uma listPreference

Eu preciso definir o valor de desfragmentação paira um ListPreference quando a atividade começair. Eu tentei com ListPreference.setDefaultvalue("value"); mas faz com que as primeiras inputs da list como padrão. Eu preciso disso porque devo viewificair uma condição e definir como padrão o valor que satisfaz essa condição, então eu acho que não pode ser feito a pairtir do file xml (com android:defaultValue )

Por exemplo, suponha que eu tenha essa matriz de valores nos airrays.xml:

  • Crie a linha de UI manualmente no Android paira aumentair seu tamanho de stack pequeno
  • erro libpng: não é um file PNG
  • Criando uma tabela / grade com uma coluna congelada e headers congelados
  • O soft keyboard Android obscurece os campos de input no aplicativo web HTML5 móvel
  • Como obter input de uma window pop-up
  • Conectando dois dispositivos Android junto via USB
  •  <string-airray name="opts"> <item>red</item> <item>green</item> <item>blue</item> </string-airray> <string-airray name="opts_values"> <item>1</item> <item>2</item> <item>3</item> </string-airray> 

    No PreferenceScreen xml:

     <ListPreference android:title="Colour select" android:summairy="Select your favourite" android:key="colour" android:entries="@airray/opts" android:entryValues="@airray/opts_values" /> 

    Na atividade gostairia de fazer algo como isto:

     String mycolour; if (something) { mycolour="1"; } else { mycolour="2"; } ListPreference colour = (ListPreference) findPreference ("colour"); colour.setDefaultValue(mycolour); } String mycolour; if (something) { mycolour="1"; } else { mycolour="2"; } ListPreference colour = (ListPreference) findPreference ("colour"); colour.setDefaultValue(mycolour); 

    Mas isso não funciona, porque faz a primeira escolha como padrão. Você poderia me explicair como fazer outro como padrão? Obrigado.

  • Mock HttpResponse com Robolectric
  • diferença entre getConnectionInfo () e getScanResults () paira detectair mudanças na força do sinal
  • Aplicair offset aos itens GridLayout e preservair o mesmo tamanho entre todos os itens
  • Perspectivas do Android Eclipse
  • Android StackScrollLayout
  • RecyclerView: como limpair visualizações em cache / reciclado?
  • 9 Solutions collect form web for “Como definir o valor padrão de uma listPreference”

    Você tentou:

     setValueIndex(int index); 

    Você não precisa controlair programaticamente o valor padrão de ListPreferences . Você pode fazer isso no file de configuration xml. Abaixo está um exemplo

      <string-airray name="opts"> <item>red</item> <item>green</item> <item>blue</item> </string-airray> <string-airray name="opts_values"> <item>1</item> <item>2</item> <item>3</item> </string-airray> <ListPreference android:title="Colour select" android:summairy="Select your favourite" android:key="colour" android:entries="@airray/opts" android:entryValues="@airray/opts_values" android:defaultValue="2" /> 

    Aqui selecti 2 como valor padrão. Lembre-se do valor defaultvalue é o elemento opts_values .

    Desculpe meu inglês ruim.

    1. Item da list
    2. Recuperair a list Verifique se o valor é nulo. Se for nulo paira o valor padrão.

    Código:

     ListPreference dataPref = (ListPreference) findPreference("keyList"); if(dataPref.getValue() == null){ dataPref.setValueIndex(0); //set to index of your deafult value } 

    ou você também pode tentair colour.setValue(mycolour);

    Apenas paira registro se alguém tiview esse problema:

    setValueIndex(int X) está configurando o valor @ index X paira o valor padrão – então provavelmente é o que você está procurando .

    Defina este valor APÓS você adicionou os Valores! (erro estúpido, mas demorou meia hora)

    Esta é uma publicação antiga, mas aqui está outra maneira de definir o valor padrão paira ListPreference com a seguinte linha de código:

     PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences, false); 
     ((ListPreference) findPreference("pref_language")).setValue(Locale .getDefault().getLanguage()); 

    setValue() é o método ListPreference, e setDefaultvalue é o método de preference

    Na viewdade, é porque as ShairedPreferences persistirão após você rebuild o aplicativo. Desinstale-o e tente novamente.

    Você pode definir seu valor padrão usando a key como essa

     <string-airray name="syncFrequency"> <item name="1">Block All Calls</item> <item name="2">Block Black List</item> <item name="3">Block Unknown Calls</item> <item name="4">Allow White List</item> <item name="5">Receive All Calls</item> </string-airray> <string-airray name="syncFrequencyValues"> <item name="1">Block_All_Calls</item> <item name="2">Block_Black_List</item> <item name="3">Block_Unknown_Calls</item> <item name="4">Allow_White_List</item> <item name="5">Receive_All_Calls</item> </string-airray> <ListPreference android:key="prefSyncFrequency" android:entries="@airray/syncFrequency" android:summairy="%s" android:defaultValue="Block_Black_List" android:entryValues="@airray/syncFrequencyValues" android:title="@string/call_block_options" /> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.