Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android基礎之startActivityForResult()的用法詳解

Android基礎之startActivityForResult()的用法詳解

編輯:關於Android編程

前言

安卓開發中一個很基礎的操作就是打開一個 Activity ,另一個很必要的操作就是,打開一個 Activity ,在打開的 Activity 中操作之後並獲得返回結果。

兩個 Activity

為了演示這個操作,我們需要兩個 Activity : MainActivity 和 OtherActivity ,在 MainActivity 中通過 Intent 啟動 OtherActivity ,並獲得 OtherActivity 結束後返回的結果,例子僅作演示,為了方便,我直接在 Java 文件中定義了控件,就不寫布局文件了。

MainActivity.java

package net.conw.intenttest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

public class MainActivity extends Activity implements View.OnClickListener {

 private EditText editText;
 private Button button;
 public static int REQUEST_CODE = 1;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  LinearLayout layout = new LinearLayout(this);
  editText = new EditText(this);
  button = new Button(this);
  button.setText("Main");
  button.setOnClickListener(this);

  layout.addView(editText);
  layout.addView(button);
  setContentView(layout);
 }

 @Override
 public void onClick(View v) {
  Intent intent = new Intent(this, OtherActivity.class);
  intent.putExtra("text", editText.getText().toString());
  startActivityForResult(intent, REQUEST_CODE);
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(requestCode == REQUEST_CODE && resultCode == OtherActivity.RESULT_CODE) {
   editText.setText(data.getStringExtra("text"));
  }
 }
}

OtherActivity.java

package net.conw.intenttest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

public class OtherActivity extends Activity implements View.OnClickListener {

 private EditText editText;
 private Button button;
 public static int RESULT_CODE = 1;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  LinearLayout layout = new LinearLayout(this);
  editText = new EditText(this);
  button = new Button(this);
  button.setText("Other");
  button.setOnClickListener(this);

  layout.addView(editText);
  layout.addView(button);
  setContentView(layout);

  editText.setText(getIntent().getStringExtra("text"));
 }

 @Override
 public void onClick(View v) {
  Intent intent = new Intent();
  intent.putExtra("text", editText.getText().toString());
  setResult(RESULT_CODE, intent);
  finish();
 }
}

整個代碼的執行邏輯如下:

1、兩個 Activity 的代碼就是這樣的, 當 MainActivity 中的 Button 被觸發 onClick() 事件後,把 MainActivity 中的 EditText 的內容發給了 OtherActivity 。

2、OtherActivity 打開並初始化好控件後,把 EditText 的內容設置為 MainActivity 發過來的內容。

3、當 OtherActivity 中的 Button 被觸發 onClick() 事件後,把 OtherActivity 中的 EditText 的內容返回給 MainActivity。

4、當返回到 MainActivity 時,會執行 ononActivityResult() 方法的內容,判斷如果 RequestCode 和 ResultCode 無誤後,把 MainActivity 中的 EditText 的內容改為 OtherActivity 返回的結果。(這裡判斷了 RequestCode 和 ResultCode ,所以 OtherActivity 通過 Back 鍵返回時, MainActivity 的內容不會改變)

所以結果就是,通過這樣的方式打開這兩個Activity,他們中的 EditText 的內容是同步的,一個 Activity 改變了,到另一個 Activity 中也會跟著改變。

總結

好了,以上就是關於Android中startActivityForResult() 的全部內容了,希望本文的內容對各位Android開發者們能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對本站的支持。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved