如何在Android中使用startactivityforresult

小樊
83
2024-09-02 19:50:03

在Android中,startActivityForResult()方法用于從一個(gè)活動(dòng)(Activity)啟動(dòng)另一個(gè)活動(dòng)并期望返回結(jié)果

  1. 創(chuàng)建第二個(gè)活動(dòng)(我們將其稱為SecondActivity)并添加所需的UI元素。

  2. 在SecondActivity中,為返回?cái)?shù)據(jù)設(shè)置一個(gè)按鈕。例如:

Button returnDataButton = findViewById(R.id.return_data_button);
returnDataButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent resultIntent = new Intent();
        resultIntent.putExtra("result_key", "這是返回的數(shù)據(jù)");
        setResult(RESULT_OK, resultIntent);
        finish();
    }
});
  1. 在第一個(gè)活動(dòng)(我們將其稱為MainActivity)中,啟動(dòng)SecondActivity并等待返回結(jié)果。例如:
private static final int REQUEST_CODE = 1;

Button startSecondActivityButton = findViewById(R.id.start_second_activity_button);
startSecondActivityButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        startActivityForResult(intent, REQUEST_CODE);
    }
});
  1. 在MainActivity中重寫onActivityResult()方法以處理SecondActivity返回的結(jié)果。例如:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
        String result = data.getStringExtra("result_key");
        // 在這里處理返回的結(jié)果,例如顯示在TextView中
        TextView resultTextView = findViewById(R.id.result_text_view);
        resultTextView.setText(result);
    }
}

現(xiàn)在,當(dāng)您點(diǎn)擊“啟動(dòng)SecondActivity”按鈕時(shí),SecondActivity將啟動(dòng)。當(dāng)您在SecondActivity中點(diǎn)擊“返回?cái)?shù)據(jù)”按鈕時(shí),MainActivity將收到返回的數(shù)據(jù),并將其顯示在resultTextView中。

0