이번 시간에는 액티비티(Activity)에서 프래그먼트(Fragment)로
데이터 전달하는 방법에 대하여 알아보겠습니다.
2022.01.08 - [안드로이드] - [안드로이드 스튜디오] 프래그먼트(Fragemnt) 만드는 방법
- 설명 -
MainActivity에서 보낸 데이터를 getArguments(). getString("키 이름")
을 통해 전달받아 Fragment화면에 보여줍니다.
public class MainFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_main, container, false);
TextView textMessage = view.findViewById(R.id.textMessage);
//넘어온 메시지 변수에 담기
String message = this.getArguments().getString("message");
//메시지 텍스트뷰에 담기
textMessage.setText(message);
return view;
}
}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainFragment">
<TextView
android:id="@+id/textMessage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textSize="25sp"
android:textStyle="bold"
/>
</FrameLayout>
- 설명 -
1. FrameLayout에 Fragment 화면이 보일 것입니다.
2. EditText에 메시지를 입력하고, Button을 통해 메시지를
Fragment에 보낼 것입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!-- 프래그먼트 화면 -->
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<!-- 입력 화면 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/editMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Enter message" />
<Button
android:id="@+id/btnSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="send" />
</LinearLayout>
</LinearLayout>
- 설명 -
1. 사용자가 입력한 데이터를 변수에 담는다.
2. 담은 데이터를 bundle를 담는다.
3. 프래그먼트에 번들을 담는다.
4. 프래그먼트 화면을 보여준다.
public class MainActivity extends AppCompatActivity {
Button btnSend;
EditText editMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSend = findViewById(R.id.btnSend);
editMessage = findViewById(R.id.editMessage);
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
Bundle bundle = new Bundle();
//1. 입력 메시지
String message = editMessage.getText().toString();
//2. 데이터 담기
bundle.putString("message",message);
//3. 프래그먼트 선언
MainFragment mainFragment = new MainFragment();
//4. 프래그먼트에 데이터 넘기기
mainFragment.setArguments(bundle);
//5. 프래그먼트 화면 보여주기
transaction.replace(R.id.frameLayout, mainFragment).commit();
}
});
}
}
2021.01.08 - [안드로이드] - [안드로이드] 프래그먼트(Fragment) 간의 데이터 전달방법(Listener)
2020.11.26 - [안드로이드] - [안드로이드] 액티비티에서 액티비티로 데이터 보내기
2020.12.09 - [안드로이드] - [안드로이드] 액티비티(Activity) 뒤로 가기 버튼 만들어보기
[안드로이드] RecyclerView 다중 화면 적용하는 방법 (0) | 2022.04.13 |
---|---|
[안드로이드] 프래그먼트(Fragment)에서 액티비티(Activity) 데이터 전달하는 방법 (0) | 2022.04.12 |
[안드로이드] Tab Custom Animation part3 - 탭 애니메이션 적용 (0) | 2022.04.10 |
[안드로이드] Tab Custom Animation part2 - 탭 기능 구현 (0) | 2022.04.09 |
[안드로이드] Tab Custom Animation part1 - 화면 구성 (0) | 2022.04.08 |
댓글 영역