상세 컨텐츠

본문 제목

[안드로이드] 액티비티(Activity) 에서 프래그먼트(Fragment) 데이터 전달하는 방법

안드로이드

by aries574 2022. 4. 11. 15:40

본문


이번 시간에는 액티비티(Activity)에서 프래그먼트(Fragment)로 

데이터 전달하는 방법에 대하여 알아보겠습니다. 


목차

1. 실행 화면

2. 프래그먼트 만들기

3. 메인 화면 구성 activity_main.xml

4. 메인 코드 구현 MainActivity.java


1. 실행 화면

 

2. 프래그먼트 만들기

2022.01.08 - [안드로이드] - [안드로이드 스튜디오] 프래그먼트(Fragemnt) 만드는 방법

 

[안드로이드 스튜디오] 프래그먼트(Fragemnt) 만드는 방법

이번 시간에는 안드로이드 스튜디오에서 프래그먼트 화면을 추가하는 방법을 알아보겠습니다. app 선택 -> 마우스 오른쪽 -> New -> Fragment 다양한 버전의 Fragment가 있어 쓰임에 따라 골라 만드시면

aries574.tistory.com

 프래그먼트 이름:  MainFragment

 - 설명 - 

 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;
    }
}

 

  fragment_main.xml

<?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>

 

 

3. 메인 화면 구성 activity_main.xml

 - 설명 - 

 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>

 

4. 메인 코드 구현 MainActivity.java

 - 설명 - 

 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)

 

[안드로이드]프래그먼트(Fragment) 간의 데이터 전달방법(Listener)

2021/01/07 - [안드로이드] - [안드로이드] 다이얼로그(Dialog) 사용자정의 (Custom) 화면으로 보여주기 2021/01/06 - [안드로이드] - [안드로이드]다이얼로그(Dialog) 체크박스(CheckBox)로 보여주기 2021/01/05..

aries574.tistory.com

2020.11.26 - [안드로이드] - [안드로이드] 액티비티에서 액티비티로 데이터 보내기

 

[안드로이드] 액티비티에서 액티비티로 데이터 보내기

이번시간에는 메인액티비티에서 다른 액티비티에 데이터를 전송하는 화면을 만들어보겠습니다. 프로젝트를 생성하면 기본으로 MainActivity가 생성이 됩니다. 이 화면에는 텍스트뷰와 버튼을 생

aries574.tistory.com

2020.12.09 - [안드로이드] - [안드로이드] 액티비티(Activity) 뒤로 가기 버튼 만들어보기

 

[안드로이드] 액티비티(Activity) 뒤로가기 버튼 만들어보기

2020/11/26 - [안드로이드] - [안드로이드] 액티비티에서 액티비티로 데이터 보내기 이번시간에는 화면전환 후 뒤로가기 버튼을 만들어 보도록 하겠습니다. 1. 신규 액티비티 만들기 화면전환을 하

aries574.tistory.com

반응형

관련글 더보기

댓글 영역