PreferenceFragment な実装でハマッた件

最初、PreferenceActivity だったかで云々、って思っていたのですが deplecated の嵐だったので、PreferenceFragment というヤツを使ってみたのですが、色々とヤられたので備忘録を残しておくことに。

面倒なので

最初に最新な実装を引用しときます。以下です。

package com.example.hoge;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.view.MenuItem;

public class SCPreferences extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        getFragmentManager().beginTransaction().replace(android.R.id.content,
            new HogePreferencesFragment()).commit();

        ActionBar actionBar = getActionBar();
        actionBar.setHomeButtonEnabled(true);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case android.R.id.home:
                finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    public static class HogePreferencesFragment extends PreferenceFragment {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        
            addPreferencesFromResource(R.xml.preferences);          
        }
    }
}

最初、HogePreferencesFragment は異なるソースファイルで管理されてました。あるいは、res/layout/ 配下のナニに直接 fragment な指定も入れておりました。
基本的には正常動作しているように見えたのですが、HomeButton な挙動に不具合、というか Fragment の中の onOptionsItemSelected メソドは呼び出されていなかったので、色々調べている内に、PreferenceFragment は Activity クラス内で static な内部クラスとして実装すべき、という情報に行きあたった次第です。
上記実装で ActionBar なボタンについては正常に動作していることを確認できてます。