SORU
7 HAZİRAN 2012, PERŞEMBE


Tercihler ekranı kullanarak ActionBar Sherlock

Bir Android uygulaması ActionBarSherlockkullanarak yapıyorum. Benim sorunum ekran tercihi yapmak için. SherlockPreferenceActivity Sınıf onBuildHeader() yöntemi nerver denir.

Bu benim kodudur

preference_headers.xml

<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" >
<header
    android:fragment="package.fragments.MyPreferenceFragment"
    android:icon="@drawable/bulle"
    android:summary="An example of some preferences."
    android:title="title" />

</preference-headers>

preferences.xml

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

    <PreferenceCategory>
        <SwitchPreference
            android:id="@ id/cb_notif"
            android:defaultValue="false"
            android:key="com.vincent.HTC_Dev.pref.notif"
            android:summaryOff="@string/notifications_off"
            android:summaryOn="@string/notifications_on"
            android:title="@string/notifications" />
    </PreferenceCategory>

</PreferenceScreen>

MyPreferenceActivity

public class MyPreferenceActivity extends SherlockPreferenceActivity {


    @Override
    public void onBuildHeaders(List<Header> target) {
        super.onBuildHeaders(target);

        loadHeadersFromResource(R.xml.preference_headers, target);
    }

}

MyPreferenceFragment

public class MyPreferenceFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.preferences);
        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        // TODO Auto-generated method stub

    }


}

CEVAP
25 HAZİRAN 2013, Salı


onBuildHeaders() yalnızca API Level 11 veya daha yüksek çalıştırıyorsanız adı verilecek. Eski aygıtlarda, addPreferencesFromResource() klasik yaklaşım geri döndü.

API Level 11 PreferenceFragment ve Android eski sürümlerinde klasik tercihleri destekleyen bir örnek için this sample project bkz.

Özellikle SherlockFragmentActivity onun gibi görünür:

package com.commonsware.android.preffragsbc;

import java.util.List;
import android.os.Build;
import android.os.Bundle;
import com.actionbarsherlock.app.SherlockPreferenceActivity;

public class EditPreferences extends SherlockPreferenceActivity {
  @SuppressWarnings("deprecation")
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (Build.VERSION.SDK_INT<Build.VERSION_CODES.HONEYCOMB) {
      addPreferencesFromResource(R.xml.preferences);
      addPreferencesFromResource(R.xml.preferences2);
    }
  }

  @Override
  public void onBuildHeaders(List<Header> target) {
    loadHeadersFromResource(R.xml.preference_headers, target);
  }
}

onCreate() ihtiyacımız varsadece*18.* ^em>eğereski bir cihaz. Bu durumda, benim örnek ikisi de addPreferencesFromResource() diyoruz yani iki tercih başlıklar, ve bu nedenle iki tercih XML dosyaları vardır. , onCreate() yeni cihazlar üzerindeki hiçbir şey ama onBuildHeaders() çağrısı tetikleyecek üst, zincir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CorridorDigital

    CorridorDigi

    17 Mayıs 2010
  • esnathesinger

    esnathesinge

    6 NİSAN 2009
  • Just So

    Just So

    3 HAZİRAN 2007