Fragment와 VIewPager를 사용하다 헛갈리는 것이 있어 포스팅한다......ㅡㅡ
참고:http://www.truiton.com/2013/05/android-fragmentstatepageradapter-example/
[dynamic한 fragment를 쓸 때에는 FragmentStatePagerAdapter]
fragment_pager.xml
MainActivity
fragment_image.xml
ImageFragment
fragment_pager_list.xml
ArrayListFragment
[Static한 fragment를 쓸 때에는 FragmentPagerAdapter]
package com.truiton.fragmentstatepageradapter; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends FragmentActivity { static final int ITEMS = 10; MyAdapter mAdapter; ViewPager mPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_pager); mAdapter = new MyAdapter(getSupportFragmentManager()); mPager = (ViewPager) findViewById(R.id.pager); mPager.setAdapter(mAdapter); Button button = (Button) findViewById(R.id.first); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { mPager.setCurrentItem(0); } }); button = (Button) findViewById(R.id.last); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { mPager.setCurrentItem(ITEMS - 1); } }); } public static class MyAdapter extends FragmentStatePagerAdapter { public MyAdapter(FragmentManager fragmentManager) { super(fragmentManager); } @Override public int getCount() { return ITEMS; } @Override public Fragment getItem(int position) { switch (position) { case 0: // Fragment # 0 - This will show image return ImageFragment.init(position); case 1: // Fragment # 1 - This will show image return ImageFragment.init(position); default:// Fragment # 2-9 - Will show list return ArrayListFragment.init(position); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
package com.truiton.fragmentstatepageradapter; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class ImageFragment extends Fragment { int fragVal; static ImageFragment init(int val) { ImageFragment truitonFrag = new ImageFragment(); // Supply val input as an argument. Bundle args = new Bundle(); args.putInt("val", val); truitonFrag.setArguments(args); return truitonFrag; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); fragVal = getArguments() != null ? getArguments().getInt("val") : 1; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View layoutView = inflater.inflate(R.layout.fragment_image, container, false); View tv = layoutView.findViewById(R.id.text); ((TextView) tv).setText("Truiton Fragment #" + fragVal); return layoutView; } }
package com.truiton.fragmentstatepageradapter; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class ArrayListFragment extends ListFragment { int fragNum; String arr[] = { "This is", "a Truiton", "Demo", "App", "For", "Showing", "FragmentStatePagerAdapter", "and ViewPager", "Implementation" }; static ArrayListFragment init(int val) { ArrayListFragment truitonList = new ArrayListFragment(); // Supply val input as an argument. Bundle args = new Bundle(); args.putInt("val", val); truitonList.setArguments(args); return truitonList; } /** * Retrieving this instance's number from its arguments. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); fragNum = getArguments() != null ? getArguments().getInt("val") : 1; } /** * The Fragment's UI is a simple text view showing its instance number and * an associated list. */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View layoutView = inflater.inflate(R.layout.fragment_pager_list, container, false); View tv = layoutView.findViewById(R.id.text); ((TextView) tv).setText("Truiton Fragment #" + fragNum); return layoutView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setListAdapter(new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, arr)); } @Override public void onListItemClick(ListView l, View v, int position, long id) { Log.i("Truiton FragmentList", "Item clicked: " + id); } }
fragment_pager.xml
MainActivity
fragment_image.xml
ImageFragment
fragment_pager_list.xml
TruitonListFragment
package com.truiton.fragmentpageradapter; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends FragmentActivity { static final int ITEMS = 10; MyAdapter mAdapter; ViewPager mPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_pager); mAdapter = new MyAdapter(getSupportFragmentManager()); mPager = (ViewPager) findViewById(R.id.pager); mPager.setAdapter(mAdapter); Button button = (Button) findViewById(R.id.first); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { mPager.setCurrentItem(0); } }); button = (Button) findViewById(R.id.last); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { mPager.setCurrentItem(ITEMS - 1); } }); } public static class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fragmentManager) { super(fragmentManager); } @Override public int getCount() { return ITEMS; } @Override public Fragment getItem(int position) { switch (position) { case 0: // Fragment # 0 - This will show image return ImageFragment.init(position); case 1: // Fragment # 1 - This will show image return ImageFragment.init(position); default:// Fragment # 2-9 - Will show list return TruitonListFragment.init(position); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
package com.truiton.fragmentpageradapter; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class ImageFragment extends Fragment { int fragVal; static ImageFragment init(int val) { ImageFragment truitonFrag = new ImageFragment(); // Supply val input as an argument. Bundle args = new Bundle(); args.putInt("val", val); truitonFrag.setArguments(args); return truitonFrag; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); fragVal = getArguments() != null ? getArguments().getInt("val") : 1; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View layoutView = inflater.inflate(R.layout.fragment_image, container, false); View tv = layoutView.findViewById(R.id.text); ((TextView) tv).setText("Truiton Fragment #" + fragVal); return layoutView; } }
package com.truiton.fragmentpageradapter; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class TruitonListFragment extends ListFragment { int fragNum; String arr[] = { "This is", "a Truiton", "Demo", "App", "For", "Showing", "FragmentPagerAdapter", "and ViewPager", "Implementation" }; static TruitonListFragment init(int val) { TruitonListFragment truitonList = new TruitonListFragment(); // Supply val input as an argument. Bundle args = new Bundle(); args.putInt("val", val); truitonList.setArguments(args); return truitonList; } /** * Retrieving this instance's number from its arguments. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); fragNum = getArguments() != null ? getArguments().getInt("val") : 1; } /** * The Fragment's UI is a simple text view showing its instance number and * an associated list. */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View layoutView = inflater.inflate(R.layout.fragment_pager_list, container, false); View tv = layoutView.findViewById(R.id.text); ((TextView) tv).setText("Truiton Fragment #" + fragNum); return layoutView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setListAdapter(new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, arr)); } @Override public void onListItemClick(ListView l, View v, int position, long id) { Log.i("Truiton FragmentList", "Item clicked: " + id); } }
'6. With IT > 6.1 Android' 카테고리의 다른 글
UI와 Handler (0) | 2015.07.27 |
---|---|
GCM 푸시서버연동 설정 - Server (1) | 2015.04.10 |
GCM 푸시서버연동 설정 - Client (3) | 2015.04.10 |
ScalableLayout (0) | 2015.03.06 |
EventBus기법 (0) | 2015.03.06 |