Android Fragment 静的に定義 サンプル

android_grid_view02

Activity に 直接GridViewを配置したものを、Fragmentに切り出す。

1.Fragment用のレイアウト

Activity から、GridView部分を移動

  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context="info.typea.kaigiutil.MenuItemFragment">
  6.  
  7. <LinearLayout
  8. android:layout_width="match_parent"
  9. android:layout_height="match_parent"
  10. android:orientation="horizontal">
  11. <GridView
  12. android:id="@+id/grid_menu"
  13. android:layout_width="match_parent"
  14. android:layout_height="match_parent"
  15. android:numColumns="auto_fit"
  16. android:gravity="center">
  17.  
  18. </GridView>
  19. </LinearLayout>
  20.  
  21. </FrameLayout>

2.Activityのレイアウトを修正

Fragmentをレイアウトファイルに静的に定義する、もともと、GridViewを定義していた場所をFragmentに置き換え

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <android.support.constraint.ConstraintLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:app="http://schemas.android.com/apk/res-auto"
  5. xmlns:tools="http://schemas.android.com/tools"
  6. android:layout_width="match_parent"
  7. android:layout_height="match_parent"
  8. tools:context="info.typea.kaigiutil.MainActivity">
  9.  
  10. <fragment
  11. android:id="@+id/menu_item_fragment"
  12. android:name="info.typea.kaigiutil.MenuItemFragment"
  13. android:layout_width="match_parent"
  14. android:layout_height="match_parent"/>
  15.  
  16. </android.support.constraint.ConstraintLayout>

3.Fragmentの実装

GridViewのアイテムをクリックしたら、トーストを表示させる。

  1. package info.typea.kaigiutil;
  2.  
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.support.v4.app.Fragment;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.AdapterView;
  10. import android.widget.GridView;
  11. import android.widget.TextView;
  12. import android.widget.Toast;
  13.  
  14. public class MenuItemFragment extends Fragment {
  15. public MenuItemFragment() {
  16. }
  17.  
  18. @Override
  19. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  20. Bundle savedInstanceState) {
  21.  
  22. View v = inflater.inflate(R.layout.fragment_menu_item, container, false);
  23. GridView gv = (GridView)v.findViewById(R.id.grid_menu);
  24. gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  25. @Override
  26. public void onItemClick(AdapterView parent, View view, int position, long id) {
  27. Toast.makeText(MenuItemFragment.this.getContext(),
  28. ((TextView)view.findViewById(R.id.txt_menu_item)).getText(), Toast.LENGTH_LONG).show();
  29. }
  30. });
  31.  
  32. return v;
  33. }
  34.  
  35. }

4.その他の個所

サンプルコードが最低限、コンパクトでいい感じ。最新SDK対応版がでるといいな

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です