溫馨提示×

startactivityforresult的用途是什么

小樊
83
2024-09-02 19:49:12
欄目: 編程語言

startActivityForResult是Android開發(fā)中用于啟動另一個Activity并期望從該Activity獲取返回結(jié)果的方法。其主要用途和用法如下:

主要用途

  • 啟動Activity并等待返回結(jié)果:在一個Activity中啟動另一個Activity,并期望從該Activity獲取一些數(shù)據(jù)或結(jié)果。
  • 數(shù)據(jù)傳遞:允許一個Activity啟動另一個Activity,并將數(shù)據(jù)傳遞給被啟動的Activity。被啟動的Activity處理完數(shù)據(jù)后,可以通過setResult方法將結(jié)果返回給啟動它的Activity,啟動的Activity通過重寫onActivityResult方法來接收和處理這些結(jié)果。

基本用法

  1. 啟動Activity并等待返回結(jié)果
Intent intent = new Intent(this, TargetActivity.class);
startActivityForResult(intent, REQUEST_CODE);
  1. 處理返回結(jié)果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        // 處理返回的數(shù)據(jù)
    }
}
  1. 在被啟動的Activity中返回結(jié)果
Intent intent = this.getIntent();
String result = intent.getStringExtra("result");
setResult(Activity.RESULT_OK, intent);
finish();

示例

假設我們有兩個Activity:MainActivitySecondActivity。在MainActivity中,用戶可以點擊一個按鈕來啟動SecondActivity。在SecondActivity中,用戶可以輸入一些數(shù)據(jù),然后點擊一個按鈕返回結(jié)果到MainActivity。

  1. 在MainActivity中啟動SecondActivity
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
  1. 在SecondActivity中處理數(shù)據(jù)并返回結(jié)果
Intent intent = this.getIntent();
String input = intent.getStringExtra("input");
String result = processData(input); // 假設這是處理數(shù)據(jù)的方法
intent.putExtra("result", result);
setResult(Activity.RESULT_OK, intent);
finish();
  1. 在MainActivity中接收并處理返回的結(jié)果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        String result = data.getStringExtra("result");
        // 處理返回的數(shù)據(jù)
    }
}

通過這種方式,startActivityForResult允許Activity之間進行數(shù)據(jù)交換和結(jié)果傳遞,從而實現(xiàn)更豐富的應用交互。

0