2014/09/09

[android]Fragmentに手を出して良いものか・・・

Android Studioで値を見るとデフォルトで10進数になるようだ。
切り替えるのが面倒なので、デフォルトを16進数にできないものかと思いつつ、今日も勉強中です。

 

AndroidやJavaのわからんことを書いているが、心優しき人々がコメントをくださる(全然関係ないけど、なんでサマリア人は「よき」がつくんだろう?)
ありがたく読みながら、お勉強している。

さて、今回はFragment。
「NFC関係はFragmentに書いて、Activityのサイクルとは切り離している」とのコメントが。
名前は聞いたことがあるけど、そもそもFragmentが何かわかってないので、とりあえずそこだけ調べて、私が手を出せるものか考えよう。


ネットでFragmentを調べて、心惹かれるキーワードだけ書いてみよう。
やる気が出るかもしれない。

  • タブレット端末とスマートフォン端末で表示を切り替えやすくなる
  • 複数のFragmentを合成してActivityを作ることができる
  • ロジックとUIを分けることができる

惹かれるような、そうでもないような・・・。
たぶん、「ボタン押す→何か動く」くらいのアプリしか作ってないからだろう。
ロジックっちゅうロジックは、全部ライブラリに突っ込んでるからなぁ。

わかりやすいスライドがあった。

あー、再利用かー。
あんまり画面作るの好きじゃないので、一度作ったら使い回せるとうれしいけど、そんなイメージかいな?
あるいは、あれこれ悩まず、とりあえずやってみたらわかるようなものか。


今作っているアプリで、唯一Fragmentが使われている画面がある。
PreferenceFragmentだ。
どっかのサイトに「PreferenceActivityじゃなくてPreferenceFragmentを使う場合」ってのがあったので、まねしてみたのだ。

短いので、貼ろう。

public class SettingsActivity extends Activity {

    public static final String PREF_MASTER_KEY = "pref_master_key";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new PlaceholderFragment()).commit();
    }
    public static class PlaceholderFragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preference_settings);
        }
    }
}

関係するのはonCreate()の2行目と、static classなPlaceholderFragment。
Activityは、PreferenceActivityじゃなくて普通のActivity。
static classになっているPreferenceFragmentってのが、Fragmentだろう。
それをnewして置き換えるように書かれているところが「複数のFragmentを集めて1つのActivityを作る」というところの一端なんだろう(ここではFragmentが1つしかないので)。

 

Activityっていう動物園があって、そのなかにゾウたちのFragmentとかトラたちのFragmentとかがそれぞれ入っているようなイメージなのかな(なんで動物園なんだ・・・)。