温馨提示×

在startactivityforresult中处理返回结果

小樊
91
2024-09-02 19:52:52
栏目: 编程语言

在Android开发中,startActivityForResult用于启动一个新的Activity,并在该Activity完成后返回结果

  1. 创建一个Intent对象,用于启动新的Activity。
  2. 使用startActivityForResult(intent, requestCode)方法启动新的Activity。requestCode是一个整数,用于标识请求。
  3. 在新的Activity中处理完成后,使用setResult(resultCode, intent)方法设置结果。resultCode是一个整数,表示结果状态;intent是一个包含返回数据的Intent对象。
  4. 在原始Activity中重写onActivityResult(requestCode, resultCode, data)方法,以处理返回的结果。

下面是一个简单的示例:

假设我们有两个Activity:MainActivitySecondActivity。在MainActivity中,我们通过点击一个按钮来启动SecondActivity,并等待其返回结果。

MainActivity.java:

public class MainActivity extends AppCompatActivity {

    private static final int REQUEST_CODE = 1;

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

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
            String result = data.getStringExtra("result");
            Toast.makeText(this, "Result: " + result, Toast.LENGTH_SHORT).show();
        }
    }
}

SecondActivity中,我们处理完成后,将结果设置为一个字符串,并返回给MainActivity

SecondActivity.java:

public class SecondActivity extends AppCompatActivity {

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

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("result", "Hello from SecondActivity!");
                setResult(RESULT_OK, intent);
                finish();
            }
        });
    }
}

当用户点击SecondActivity中的按钮时,将返回一个字符串结果给MainActivity,并显示一个Toast消息。

0