[ Fragment 기초 예제 3 ] 0. 참고 : DO IT 안드로이드 (02-10 : SampleFragment2)
1. Layout3개
- activity_main.xml fragment_list.xml fragment_viewer.xml
2. 실행 화면
1. activity_main.xml
- <fragment> 2개를 위/아래로 가지고 있음
- android:name : Fragment를 넣을 객체명 지정
-
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
<fragment android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:name="org.androidtown.fragment.ListFragment" android:id="@+id/listFragment" />
<fragment android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:name="org.androidtown.fragment.ViewerFragment" android:id="@+id/viewerFragment" />
</LinearLayout>
|
2. fragment_list.xml
-
<?xml version="1.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">
<ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listView" /> </LinearLayout> |
3. fragment_viewer.xml
-
<?xml version="1.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">
<ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/imageView" android:src="@drawable/dream01"/>
</LinearLayout> |
4. MainActivity.java
- drawable 폴더 밑으로 dream01.png, dream02.png, dream03.png 이미지 3개 필요
-
public class MainActivity extends AppCompatActivity implements ListFragment.ImageSelectionCallback { ListFragment listFragment; ViewerFragment viewerFragment;
int[] images = {R.drawable.dream01, R.drawable.dream02, R.drawable.dream03};
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
FragmentManager manager = getSupportFragmentManager(); listFragment = (ListFragment) manager.findFragmentById(R.id.listFragment); viewerFragment = (ViewerFragment) manager.findFragmentById(R.id.viewerFragment); }
@Override public void onImageSelected(int position) { viewerFragment.setImage(images[position]); } } |
5. ListFragment.java
-
public class ListFragment extends Fragment { String[] values = {"첫번째 이미지", "두번째 이미지", "세번째 이미지"};
public static interface ImageSelectionCallback { public void onImageSelected(int position); }
public ImageSelectionCallback callback;
@Override public void onAttach(Context context) { super.onAttach(context);
if (context instanceof ImageSelectionCallback) { callback = (ImageSelectionCallback) context; } }
@Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_list, container, false);
ListView listView = (ListView) rootView.findViewById(R.id.listView); ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, values); listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (callback != null) { callback.onImageSelected(position); } } });
return rootView; } } |
6. ViewerFragment.java
-
public class ViewerFragment extends Fragment { ImageView imageView;
@Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_viewer, container, false);
imageView = (ImageView) rootView.findViewById(R.id.imageView);
return rootView; }
public void setImage(int resId) { imageView.setImageResource(resId); } } |