Android 8日目

2888 ワード


  • 実習

  • アクティビティ結果を受信する機能を実現
    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"));
                   }
               }
           }
    );

  • registerForActivity Result:コンテンツ応答コールバック登録の開始

  • result.getResultCode():結果コードを返す方法
  • RESULT OK:正常処理時の結果コード
  • RESULT CANCELEED:異常処理時に生成するコード

  • result.getData():応答入力に格納されたデータを返す方法

  • ボタン機能の実装
         btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(FirstActivity.this,ThirdActivity.class);
    
                launcher.launch(intent);
            }
        });
    なぜ
  • エミッタを使用しますか?
    :ThirdActivity(その他のアクティビティ)で後結果処理を実行する方法
  • 、onActivity Result()処理用

  • 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とともに転送されます.

  • 実行画面


  • コンソール出力画面