[Android] 프래그먼트 데이터 공유(Not MVVM)2
2021. 5. 25. 13:14ㆍ모바일/Android_Java
[Android] 프래그먼트 데이터 공유(Not MVVM)2
Activity
- 최상위 프래그먼트 or 액티비티에서 리스너 인터페이스를 작성한다
- 공유할 데이터들을 정의한다.
- 각각의 프래그먼트에서 해당 함수들을 호출 할 때 할 행위들을 정의한다.
public class MyActivity extends Activity {
private final String TAG = "MyActivity";
private ApplyData applyData = new ApplyData(); // 신청 데이터
private QueryData queryData = new QueryData(); // 조회 데이터
public interface MyListener {
int STEP_1 = 0;
int STEP_2 = 1;
int STEP_3 = 2;
void fragmentStepMove(int step); // 프래그먼트 단계 이동
void changeToolbarTitle( String title ); // 툴바 타이틀변경
ApplyData getpplyData();
QueryData getQueryData();
}
MyListener myListener = new MyListener() {
@Override
public void fragmentStepMove(int step) {
stepMove(step);
}
@Override
public void changeToolbarTitle(String title) {
tv_title.setText( title );
}
@Override
public ApplyData getpplyData() {
return applyData;
}
@Override
public QueryData getQueryData() {
return queryData;
}
};
// 프래그먼트 단계 이동
public void stepMove(int step) {
FragmentTransaction transaction = fm.beginTransaction();
// 1단계
if (step == MyListener.APPLY_STEP_1) {
Apply1Fragment apply1 = new Apply1Fragment();
apply1.setListener(myListener);
transaction.replace(R.id.apply_fragment, apply1);
currentFragment = apply1;
}
// 2단계
else if (step == MyListener.APPLY_STEP_2) {
Apply2Fragment apply2 = new Apply2Fragment();
apply2.setListener(myListener);
transaction.replace(R.id.apply_fragment, apply2);
currentFragment = apply2;
}
// 3단계
else if (step == MyListener.APPLY_STEP_3) {
Apply3Fragment apply3 = new Apply3Fragment();
Bundle bundle = new Bundle();
apply3.setListener(myListener);
transaction.replace(R.id.apply_fragment, apply3);
currentFragment = apply3;
}
}
}
Fragment1
public class Apply1Fragment extends Fragment implements View.OnClickListener {
// 신청해지 화면과의 인터페이스
MyListener myListener;
public void setListener( MyListener myListener) {
this.myListener = myListener;
}
@Override
public void onClick(View v) {
switch ( v.getId() ) {
// 다음단계로 이동
case R.id.next:
if( myListener != null ) {
myListener.fragmentStepMove( MYListener.APPLY_STEP_2 );
}
break;
}
}
}
- Fragment2, Fragment3 도 같은방식으로 구현한다..
- Fragment에서 함수를 호출하면 액티비티에서 구현한 리스너 함수로 프래그먼트를 변경하고, 액티비티에 필요한 데이터를 저장하고 가져오는 등의 행위를 한다
'모바일 > Android_Java' 카테고리의 다른 글
[Android] maven jcenter vs mavenCentral (0) | 2021.06.02 |
---|---|
[Android] CustomView attr 속성에 다중 값(multi value) 설정 방법 (0) | 2021.05.26 |
[Android] button onclick in LinearLayout not working (0) | 2021.05.25 |
[Java] JAVA String 메소드중 Replace로 괄호()와 점.을 치환하려 할때 (0) | 2021.05.20 |
터치 이벤트 간략 정리(onTouchEvent, dispatchTouchEvent, onInterceptTouchEvent) (1) | 2021.05.18 |