fragmentを使ってみよう

12
Support-v4 + Fragment 基基基基基基基

Upload: hirokazu-fukami

Post on 31-May-2015

7.401 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: Fragmentを使ってみよう

Support-v4 + Fragment

基本的な使い方?

Page 2: Fragmentを使ってみよう

目的

android-support-v4.jarを使って、 Fragment使った遷移(画面遷移)を学ぼう

Buttonをタップしたら次の画面に行って、端末の戻るボタンで戻ってくるだけのアプリを作ってみよう

Page 3: Fragmentを使ってみよう

Projectを作ろう

Eclipseで Android Application Projectを作るandroid-support-v4.jarは libsに勝手にはいる

Page 4: Fragmentを使ってみよう

Fragmentを置く場所

activity_main.xmlを書き換えて、 Fragmentを置く場所を作る

Page 5: Fragmentを使ってみよう

FragmentActivity

android-support-v4.jarを使う場合は、 FragmentActivityを使う

Page 6: Fragmentを使ってみよう

ページ (Fragment)を作る

最初のページ用 layout.xml(fragment_page_1.xml)を作る

Page 7: Fragmentを使ってみよう

Page1Fragmentを作る

Fragmentを継承した、 Page1Fragmentを作るpublic class Page1Fragment extends Fragment { public static Page1Fragment newInstance() { Page1Fragment fragment = new Page1Fragment();

return fragment; }

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.fragment_page_1, container, false); return root; }}

Page 8: Fragmentを使ってみよう

newInstance()

パラメータ付きで Fragmentのインスタンスを作りたいときに存在意義がでてくる引数付きコンストラクタは作れない

定番パターンの1つとして覚えておくといいかも?

Page 9: Fragmentを使ってみよう

onCreateView

Viewを作って返すためのメソッド

引数で渡される inflaterを使う場合は以下の呼び方のみinflater.inflate(R.layout.fragment_page_1, container, false);

container, false で呼ばないとアプリ落ちます( ´ ・ω ・`)

View.OnClickListenerとかもここでセットできるのならしてしまう

Page 10: Fragmentを使ってみよう

次の Fragmentを作る

Page2Fragmentを作る。レイアウトはおまかせpublic class Page2Fragment extends Fragment { public static Page2Fragment newInstance() { Page1Fragment fragment = new Page2Fragment();

return fragment; }

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.fragment_page_2, container, false); return root; }}

Page 11: Fragmentを使ってみよう

ボタン押したら画面遷移

こんな感じで replace()と commit()を呼べば OK

View button = root.findViewById(R.id.button1);button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); // 今の Fragmentを BackStackに名前をつけて入れる transaction.addToBackStack("page1"); transaction.replace(R.id.main, Page2Fragment.newInstance()); transaction.commit(); }});

Page 12: Fragmentを使ってみよう

あれ、最初は?

MainActivityの onCreate()で replace() + commit()getSupportFragmentManager()な点に注意

@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); // Go to Page 1 transaction.replace(R.id.main, Page1Fragment.newInstance()); transaction.commit();}