LoginSignup
7

More than 5 years have passed since last update.

Fragment覚書

Last updated at Posted at 2015-10-28

Fragmentの簡単なサンプルです。

support.v4.app.Fragment
support.v4.app.FragmentTransaction
を使っています

サンプルプログラム

MainActivity.java
public class MainActivity extends AppCompatActivity{

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //FragmentManagerの取得
        FragmentManager mFragmentManager = getSupportFragmentManager();
        //FragmentTransactionの取得
        FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction();

        //Fragment1のインスタンス取得後、好みに応じてbundleをsetArguments
        Fragment1 mFragment1 = Fragment1.getInstance();
        Bundle args = new Bundle();
        args.putString("string", "message");
        mFragment1.setArguments(args);

        //containerにFragment1があてられる
        mFragmentTransaction.add(R.layout.container, mFragment1); 
        //最後にcommit()して反映される
        mFragmentTransaction.commit();
    }
}
Fragment1.java
public class Fragment1 extends Fragment{

    public Fragment1(){}

    public static Fragment1 getInstance(){
        Fragment1 instance = new Fragment1();
        return instance;
    }

    //Bundleの取得は必要に応じて
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        Bundle args = getArguments();
        String str = getString("string");
   }

    @Nullale
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup conteiner, Bundle savedInstanceState){
        //xmlで作成したlayoutを適用
        View v = inflater.inflate(R.layout.fragment_1, null);
        return v;
    }
}

activity_main.xml : containerにfragmentがあてられる

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:text="Hello World!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <!--fragmentがあてられる-->
    <FrameLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:id="@+id/container"/> 

</RelativeLayout>

fragment_1.xml : TextView一つだけのfragmentです。

fragment_1
<?xml version="2.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical|center_horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="fragment1"
        android:id="@+id/textView"
        android:layout_gravity="center_horizontal" />

</LinearLayout>

参考:
http://mixi-inc.github.io/AndroidTraining/fundamentals/2.02.activity-and-fragment.html

ありがとうございました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7