[연습5] - FirstActivity에서 ThirdActivity로 데이터 전달하기

  1. 연습4까지 수행한 프로젝트를 바탕으로 진행
  2. 기존 activity_first.xml의 지도보기 작업 시작하기 버튼 위젯 아래에 다음과 같은 뷰를 추가한다.

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout ...>
    
            <TextView
                    ... />
    
            <Button
                    android:text="두번째 액티비티 시작하기"
                    ... />
            <Button
                    android:text="다이얼 작업 시작하기"
                    ... />      
            <Button
                    android:text="지도보기 작업 시작하기"
                    ... />
    
            <!-- 추가된 뷰(시작) -->
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <EditText
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/edit_data"
                    android:layout_weight="1"
                    android:hint="데이터 입력"/>
                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="세번째 액티비티에 데이터 전달"
                    android:id="@+id/buttonThirdActivity"/>
            </LinearLayout>
            <!-- 추가된 뷰(끝)-->
    </LinearLayout>
  3. FirstActivity 클래스에서 다음 코드를 추가하시오

    public class FirstActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            //...(연습 4까지 진행된 코드)
    
            // 연습 4까지 진행된 코드 이후에 추가된 코드
            btn = findViewById(R.id.buttonThirdActivity);
            btn.setOnClickListener(new View.OnClickListener(){
    
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(getApplicationContext(), ThirdActivity.class);
    
                    EditText edit = findViewById(R.id.edit_data);
                    intent.putExtra("dataFromFirstActivity", edit.getText().toString());
    
                    startActivity(intent);
                }
            });
        }
  4. ThirdActivity에서 사용할 레이아웃 파일 activity_third.xml을 다음과 같이 작성

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:orientation="vertical">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="세번째 액티비티입니다."
            android:id="@+id/textView2" />
    
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/editText"
            android:inputType="text"
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="닫기"
            android:id="@+id/buttonThirdActivity"/>
    </LinearLayout>
  5. ThirdActivity 클래스의 onCreate() 메소드에서 다음 코드를 추가한다.

    public class ThirdActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_third);
    
            Intent intent = getIntent();
            String msg = intent.getStringExtra("dataFromFirstActivity");
            EditText et = (EditText)findViewById(R.id.editText);
            et.setText(msg);
    
            Button btn = findViewById(R.id.buttonThirdActivity);
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    finish();
                }
        });
        }
    }
  6. 실행결과

초기 실행 화면 데이터 입력 버튼 클릭 후