基本に戻って、Android DevelopersのSettingsを読んだ。
<PreferenceScreen>の書き方は、前と同じようだ。
前をあまり知らないが、昔使っていたxmlファイルも同じような書き方だった、というだけだが。
「Using Preference Fragments」に、「PreferenceFragmentを追加すればPreferenceActivityは使わなくてよい」とある。
このときは、こんな感じみたいだ。
- 上のActivityは、"Activity"をextends
- その中に、static classとしてPreferenceFragmentをextendsしたものを持つ
- onCreate()でaddPreferencesFromResource(R.layout.xxx)する
- ActivityのonCreate()ではsetContentView(R.layout.xxx)はやらない。
代わりにgetFragmentManager().beginTransaction().replace()してstatic classを指定?する。
R.layout.xxxの中身を見て判断しているのかな?
じゃあPreferenceActivityはもういらないのか、と思って読み進めると「Using Preference Headers」でまた出てきた。
A500の設定画面は、左側に設定グループ、右側に選択した設定グループの中身が表示されていた。
あの左側に表示されるやつがHeaderみたいだ。
<PreferenceCategory>とはまた違うのか。
あるいは、<PreferenceScreen>の中に<PreferenceScreen>を書くようなsubscreenとも違うのかね。
subscreenは1つのxmlファイルの中に書かんといかんのだが、それが分離できてよい?
でも、ちょっとやれることが異なるような気がする。
とにかく、Preference Headerを使うときは、こんな感じみたいだ。
さっきと違うところは赤文字にした。
- 上のActivityは、"PreferenceActivity"をextends
- その中に、static classとしてPreferenceFragmentをextendsしたものを持つ
- onCreate()でaddPreferencesFromResource(R.layout.xxx)する
- ActivityのonCreate()ではsetContentView(R.layout.xxx)はやらない。
getFragmentManager().beginTransaction().replace()もやらない。 - onBuildHeaders()を追加する。
その中でloadHeadersFromResource(R.xml.xxx_header)する - res/xml/xxx_headers.xmlを追加する。
その中にandroid:fragmentでstatic classを指定?する。
Fragmentって、必ず画面が左右に分かれるわけじゃないんだな。
あまりFragment自体をわかっていなかったのだが、左右に画面を分けるしくみじゃなくて、画面の大きさを吸収するためのしくみらしい。
私にとってはNexus7はけっこう大きな画面だと思っていたのだが、Fragmentにしても画面遷移しているところからすると、まだまだ狭いということなのだろう。
試しに横向きにしてみたが、同じだった。
まあ、そういうものなのだろう。
試作アプリ
https://sites.google.com/site/hiro99ma/home/files/freeapk/LockMemo.apk?attredirects=0&d=1
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。