[Android/Java] Jetpack Navigation 화면 전환과 Fragment 간의 데이터 전달
7168 단어 안드로이드JetpackAndroidStudio자바
다음 기사의 프로젝트 기반에 대한 설명입니다.
Android Developer의 Jetpack Navigation 화면 전환과 Fragment 간의 데이터 전달에 대한 설명은 다음과 같습니다.
SafeArgs 추가
※ 현시점에서는 androidx.navigation:navigation-safe-args-gradle-plugin을 implementation에서는 동작하지 않는 것 같습니다
※ androidx.navigation 버전에 맞게 설정하십시오.
build.gradle(Project)
buildscript {
dependencies {
def nav_version = "2.3.4"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
}
build.gradle(Module)
apply plugin: "androidx.navigation.safeargs"
화면 전환 준비
+ 버튼을 눌러 여기에 NextFragment를 추가합니다.
MainFragment의 Actions + 버튼을 눌러 화면 전환을 추가합니다.
Destination에서 nextFragment를 지정하고 Add 버튼으로 추가
Action이 추가되었습니다.
MainFragment에 화면 전환 실행을 위한 버튼 및 버튼 이벤트 추가
버튼 이벤트 설정 방법에 대해 자세히 알고 싶다면 아래를 참조하십시오.
여기에서는 MainFragment에 onClickButton 메서드를 추가하고 Jetpack Databinding에서 버튼 이벤트를 연결합니다.
화면 천이 처리의 구현
MainFragment.java
public void onClickButton() {
final View view = binding.getRoot();
// MainFragmentDirectionsはsafeargsを有効にすることで自動生成されます
NavDirections directions = MainFragmentDirections.actionMainFragmentToNextFragment();
Navigation.findNavController(view).navigate(directions);
}
Fragment간에 데이터를 전달하는 경우
NextFragment의 Arguments의 + 버튼을 누릅니다.
여기에서는 Name:Text Type:String 이라고 합니다.
Action(Argument Default Values)의 default value 값을 설정합니다.
여기에서는 none을 설정 ※default value를 설정하지 않으면 Action 클래스가 자동 생성되지 않습니다
NextFragment에 전달할 값 (여기서는 "xxx")을 설정합니다.
MainFragment.java
public void onClickButton() {
final View view = binding.getRoot();
// MainFragmentDirections.ActionMainFragmentToNextFragment/setText()は自動生成されます
MainFragmentDirections.ActionMainFragmentToNextFragment action = MainFragmentDirections.actionMainFragmentToNextFragment();
action.setText("xxx");
Navigation.findNavController(view).navigate(action);
}
값을 받습니다.
※ 여기에서는 설명을 간략화하고 있습니다만, 실제로는 Jetpack View/DataBinding을 사용해 값을 설정해 주세요
NextFragment.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.next_fragment, container, false);
// NextFragmentArgsは自動生成されます
String text = NextFragmentArgs.fromBundle(getArguments()).getText();
TextView tv = view.findViewById(R.id.textView);
tv.setText(text);
return view;
}
Reference
이 문제에 관하여([Android/Java] Jetpack Navigation 화면 전환과 Fragment 간의 데이터 전달), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/smurata_pvt/items/1763802e6b1c27767d27텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)