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

  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • Jejoab

    Jejoab

    4 NİSAN 2008