首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android Activity 跳轉與數據傳遞:Intent 標準用法速查

     編輯:程式設計疑難解答

啟動新 Activity 並傳值

// 在 MainActivity 中
Intent intent = new Intent(MainActivity.this, ShowProcedure.class);
intent.putExtra("key_string", "要傳遞的字符串");
intent.putExtra("key_x", 0);
intent.putExtra("key_y", 0);
startActivity(intent); // 無返回值跳轉

// 若需返回結果
startActivityForResult(intent, REQUEST_CODE); // REQUEST_CODE 自定義 int

目標 Activity 取值

// 在 ShowProcedure.onCreate() 中
Intent intent = getIntent();
String str = intent.getStringExtra("key_string"); // 若無該 key 返回 null
int x = intent.getIntExtra("key_x", -1);          // 第二參數為默認值
int y = intent.getIntExtra("key_y", -1);

返回數據給上一頁

// 在 ShowProcedure 中(如按鈕點擊或 onBackPressed)
Intent result = new Intent();
result.putExtra("result_key", "返回的數據");
setResult(RESULT_OK, result);
finish();

// 在 MainActivity 中接收
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        String back = data.getStringExtra("result_key");
    }
}

常用 Put/Get 對照表

類型Put 方法Get 方法
StringputExtra(key, value)getStringExtra(key)
intputExtra(key, value)getIntExtra(key, default)
booleanputExtra(key, value)getBooleanExtra(key, default)
ParcelableputExtra(key, value)getParcelableExtra(key)
SerializableputExtra(key, value)getSerializableExtra(key)
byte[]putExtra(key, value)getByteArrayExtra(key)

注意事項

  • Key 唯一性:建議定義 public static final String KEY_XXX = "pkg.name.KEY_XXX" 避免衝突。
  • 數據大小限制:Intent 承載數據建議 < 1MB(Binder 事務緩衝區限制),大數據請用 SharedPreferences、File、ViewModel 或 ContentProvider 共享。
  • Parcelable 比 Serializable 快:自定義對象傳遞首選實現 Parcelable(Android Studio 可自動生成)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved