티스토리 뷰
프래그먼트 많이 쓰이는 이유
Example_Fragment 프로젝트 생성 할것
1 2 3 | 1. 각각의 프래그먼트를 독립적으로 사용해서 다른 액티비티에서도 똑같이 집어넣어 쓸 수 있으므로 매우 편리하다. 이때 인터페이스를 사용해서 다른 액티비티에도 넣을 수 있다. 2. 프래그먼트 엄청나게 많은것들이 있으나, 일일이 찾아 봐야 한다. | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 1. 이미지 3개를 res-drawable 폴더에 넣어 놓을것 2. res -> layout -> new -> resource file -> fragment_list.xml 파일 생성 3. list.xml파일에 버튼을 3개 추가 할것이다. 4. fragment_viewer.xml 파일 생성 - imageView 끌어다가 추가 할것 -> dream01 이미지가 보이도록 할것. ID: imageView로 설정 5. 이제 위의 프래그먼트와 같이 다니는 자바 소스를 추가 할것이다. app->java -> new -> class java파일 추가 (Name: ListFragment Superclass: android.support.v4.app.Fragment ) 6. 이제 인플레이션을 해야하는데 여기서 override를 한다. 추가해야할것: onCreateView를 추가 한다. -> 여기서 인플레이션을 해야한다. 메모리 객체화를 해야하므로(fragment_list파일을 인플레이션 하기 위해서) 7.프래그먼트에서 다른프래그먼트로 접근을 못한다. 그러므로 activity쪽으로 요청을 해야하는데 MainActivity로 요청하는 코드를 작성 해야한다. 8. onImageChage() 메소드를 만들어서 이것을 호출하기 위해서 ListFragment.java에서 소스를 또 작성한다. 호출 | cs |
<MainActivity.java>
package com.example.example_fragment;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
ListFragment fragment1;
ViewerFragment fragment2;
FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
manager = getSupportFragmentManager();
// fragment1 = new ListFragment();
// fragment2 = new ViewerFragment();
fragment1 = (ListFragment) manager.findFragmentById(R.id.listFragment);
fragment2 = (ViewerFragment) manager.findFragmentById(R.id.viewerFragment);
// xml에 있는 프래그먼트가 있을 경우에는 찾는 메소드가 따로 있다.
// supportFragmentManager manage; 를 사용한다.
}
// 이것을 호출하기 위해 다른 프래그먼트에서 객체를 생성한다음에 호출한다.!
public void onImageChange(int index){
fragment2.setImage(index);
// Viewer 프래그먼트에서 관리를 해보자
//버튼 이벤트 발생시 index에 따라 상황이 달라지게 하려고한다.
}
}
<ListFragment.java>
package com.example.example_fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
/**
* Created by 김관현 on 2017-09-24.
*/
public class ListFragment extends Fragment {
MainActivity activity;
@Override
// 오는 순간
public void onAttach(Context context) {
super.onAttach(context);
activity = (MainActivity) getActivity(); // 찾아서 변수에 할당 (getActivity() 참조할수있다)
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup)inflater.inflate(R.layout.fragment_list,container,false);
/*
왜 여기서 ViewerFragment로 바로 인덱스 값을 주지 않고 메인엑티비티에 있는
ImageChage쪽으로 넘겨주는가? 하면은 바로 -> 프래그먼트는 인텐트를 사용하지 않기 때문에
액티비티에서 넘겨주었다가 액티비티에서 처리를 해주어야 하므로 이렇게 보내주는것이다.
*/
Button button = (Button) rootView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
activity.onImageChange(0);
}
});
Button button2 = (Button) rootView.findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
activity.onImageChange(1);
}
});
Button button3 = (Button) rootView.findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
activity.onImageChange(2);
}
});
// 여기 프래그먼트에서 다른 프래그먼트(ListFragment)를 접근 못한다. 그러므로 Activity쪽으로 요청을 해야한다
// MainActivity로 요청하는 코드를 작성하러 갈것
return rootView;
}
}
<ViewerFragment.java>
package com.example.example_fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
/**
* Created by 김관현 on 2017-09-24.
*/
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 index){
if(index ==0){
imageView.setImageResource(R.drawable.dream01);
}else if(index ==1){
imageView.setImageResource(R.drawable.dream02);
}else if(index == 2){
imageView.setImageResource(R.drawable.dream03);
}
}
}
<activity_main.xml>
<?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="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:name ="com.example.example_fragment.ListFragment"
android:id="@+id/listFragment"
/>
<fragment
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:name ="com.example.example_fragment.ViewerFragment"
android:id="@+id/viewerFragment"
/>
</LinearLayout>
<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">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="이미지 1" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="이미지 2" />
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="이미지 3" />
</LinearLayout>
<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:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/dream01" />
</LinearLayout>
- <결과>
'Android' 카테고리의 다른 글
[Android] 액션바를 탭과 함께 보여 주기 예제 (0) | 2017.09.25 |
---|---|
[Android]액션바와 탭 사용하기 (0) | 2017.09.25 |
[Android]프래그먼트 (Fragment) (4) | 2017.09.24 |
[Android] 페이지 슬라이딩 (0) | 2017.09.24 |
[Android] 간단한 애니메이션 사용하기 (0) | 2017.09.24 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- node.js
- 학교
- 스프링
- 텐서플로우
- 백준알고리즘
- Controller
- C langauge
- 머신러닝
- Algorigm
- MVC
- 복습
- 프로그래밍
- 노드
- 감자코딩
- 안드로이드
- TensorFlow
- 리버싱
- 백준
- 코드엔진
- 개발하는 관광이
- Spring
- 감자개발자
- BFS
- C언어
- node
- programming
- Android
- 초보자를 위한 C언어 300제
- 알고리즘
- db
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함