MainActivity.java

package com.bpdev.lifecycle;

import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    Button button;
    EditText editName;
    EditText editAge;

    TextView txtResult;

    ActivityResultLauncher<Intent> launcher =
            registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
                    new ActivityResultCallback<ActivityResult>() {
                        @Override
                        public void onActivityResult(ActivityResult result) {

                            // 데이터를 받아오는 코드는, 여기에다만 작성하면 된다.
                            if( result.getResultCode() == 1 ){

                                Log.i("LIFE MAIN", "onActivityResult");

                                int futureAge = result.getData().getIntExtra("data",0);
                                txtResult.setText(""+futureAge);
                            }
                        }
                    });

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.i("LIFE MAIN", "onCreate 실행됨.");

        button = findViewById(R.id.button);
        editName = findViewById(R.id.editName);
        editAge = findViewById(R.id.editAge);
        txtResult = findViewById(R.id.txtResult);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String name = editName.getText().toString().trim();
                String strAge = editAge.getText().toString().trim();

                int age = Integer.parseInt(strAge);

                // SecondActivity를 실행시키고 싶다.

                // 새로운 액티비티를 실행시키고 싶으면,
                // 인텐트를 만들어야 한다.
                // 이 액티비티가 다른 액티비티를 실행시킨다!
                // 라는 의미로, 파라미터 설정해준다.
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);

                // 데이터를 전달하기 위해서, 인텐트에 데이터를 담아줍니다.
                intent.putExtra("name" , name );
                intent.putExtra("age", age);

                // 아래 함수는 단방향으로 데이터 전달만 가능하고,
                // 내가 실행한 액티비티로부터 데이터를 받고 싶으면,
                // ActivityResultLauncher 클래스 이용해야 한다.
//                startActivity(intent);

                launcher.launch(intent);

            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();

        Log.i("LIFE MAIN", "onStart 실행됨.");
    }

    @Override
    protected void onResume() {
        super.onResume();

        Log.i("LIFE MAIN", "onResume 실행됨.");
    }

    @Override
    protected void onPause() {
        super.onPause();

        Log.i("LIFE MAIN", "onPause 실행됨.");

    }

    @Override
    protected void onStop() {
        super.onStop();

        Log.i("LIFE MAIN", "onStop 실행됨.");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        Log.i("LIFE MAIN", "onDestroy 실행됨.");
    }
}

 

SecondActivity.java

package com.bpdev.lifecycle;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {

    TextView txtContent;
    TextView txtFuture;

    int age;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        Log.i("LIFE SECOND", "두번째 액티비티의 onCreate 실행");

        // 받아오는 데이터가 있으면, 데이터를 받아온다.
        String name = getIntent().getStringExtra("name");
        age = getIntent().getIntExtra("age", 0);

        txtContent = findViewById(R.id.txtContent);
        txtFuture = findViewById(R.id.txtFuture);

        txtContent.setText("이름은 " + name + "이고, 나이는 "+age +"입니다.");
        txtFuture.setText("10년후의 나이는 "+ (age+10) + "입니다."  );



    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i("LIFE SECOND", "두번째 액티비티의 onStart 실행");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("LIFE SECOND", "두번째 액티비티의 onResume 실행");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("LIFE SECOND", "두번째 액티비티의 onPause 실행");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("LIFE SECOND", "두번째 액티비티의 onStop 실행");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("LIFE SECOND", "두번째 액티비티의 onDestroy 실행");
    }

    @Override
    public void onBackPressed() {

        // 백버튼 눌렀을때 처리해주는 함수가 이미 있으니,
        // 여기에 작성하면 된다.

        Log.i("LIFE SECOND", "두번째 액티비티의 onBackPressed 실행");

        // 나이를 10 더한후에, 이 액티비티를 실행한 액티비티에게
        // 데이터를 전달!
        int data = age + 10;

        Intent intent = new Intent();
        intent.putExtra("data", data);

        setResult(1, intent);

        // 이 코드는 내 코드 다 작성후에, 맨 마지막에 넣는다.
        super.onBackPressed();

    }
}

 

 

 

+ Recent posts