Android_8일차

  • 실습하기

    • Activity 결과 수신에 대한 기능 구현

      ActivityResultLauncher<Intent> launcher = registerForActivityResult(
             new ActivityResultContracts.StartActivityForResult(),
             new ActivityResultCallback<ActivityResult>() {
                 @Override
                 public void onActivityResult(ActivityResult result) {
                     if(result.getResultCode() == RESULT_OK){
                         Intent intent = result.getData();
      
                         
                         Log.d("FirstActivity", intent.getStringExtra("msg"));
                     }
                 }
             }
      );
      1. registerForActivityResult : 인텐트 응답 콜백 등록 실시

      2. result.getResultCode() : 결과코드를 반환하는 메소드

        • RESULT_OK : 정상적으로 처리가 됐을 때의 결과코드
        • RESULT_CANCELED : 비정상적으로 처리가 됐을 때 결과 코드
      3. result.getData() : 응답 온 Intent에 저장된 데이터를 반환하는 메소드

    • 버튼 기능 구현하기

           btn2.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  Intent intent = new Intent(FirstActivity.this,ThirdActivity.class);
      
                  launcher.launch(intent);
              }
          });
      • launcher를 사용하는 이유?
        : ThirdActivity(다른 액티비티)에서 실행 후 결과에 대한 처리는 onActivityResult()에서 처리하기 위해 실행하는 메소드
    • ThirdActivity

      • 전체 소스
      import androidx.appcompat.app.AppCompatActivity;
      
      import android.content.Intent;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.Button;
      import android.widget.EditText;
      
      public class ThirdActivity extends AppCompatActivity {
          Button btn;
          EditText edt;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_third);
      
          edt = findViewById(R.id.edtMsg);
          btn = findViewById(R.id.btnThird);
          btn.setOnClickListener(new View.OnClickListener() {
             @Override
               public void onClick(View view) {
                  String msg = edt.getText().toString();
      
                  Intent intent = new Intent();
                  intent.putExtra("msg",msg);
                 setResult(RESULT_OK,intent);
                 finish();
                }
              });
        }
      }
      • setResult(RESULT_OK,intent);
        : 정상적으로 처리가 됐을 때 응답메세지와 intent를 실행하여 같이 전달한다.
    • 실행 화면

    • 콘솔에 출력화면

좋은 웹페이지 즐겨찾기