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

Android Activity 間傳值 Key 不匹配導致取值為 Null 解決

     編輯:程式設計綜合問答

問題現象

Activity B 通過 putExtra("text", value) 傳遞數據,Activity A 使用 getStringExtra("Textview01") 取值結果為 null。

錯誤代碼對比

// Activity B (發送方)
Intent intent = new Intent(Next.this, Hw3Activity.class);
intent.putExtra("text", counted.getText().toString()); // Key: "text"
startActivity(intent);

// Activity A (接收方)
String s1 = getIntent().getStringExtra("Textview01"); // Key: "Textview01" 不匹配!
text.setText("You clicked the button " + s1 + " times.");

解決方案

統一 Key 字符串,建議定義常量避免拼寫錯誤:

// 定義常量類
public class Extras {
    public static final String EXTRA_CLICK_COUNT = "extra_click_count";
}

// 發送
intent.putExtra(Extras.EXTRA_CLICK_COUNT, counted.getText().toString());

// 接收
String count = getIntent().getStringExtra(Extras.EXTRA_CLICK_COUNT);

進階:startActivityForResult 模式

若需返回結果,應使用 startActivityForResult + onActivityResult:

// Activity A
startActivityForResult(new Intent(this, Next.class), REQUEST_CODE);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        String count = data.getStringExtra(Extras.EXTRA_CLICK_COUNT);
        // 更新 UI
    }
}

// Activity B (返回時)
Intent result = new Intent();
result.putExtra(Extras.EXTRA_CLICK_COUNT, count);
setResult(RESULT_OK, result);
finish();

總結

Intent 傳值 Key 必須完全一致(區分大小寫),使用常量定義是防止此類低級錯誤的最佳實踐。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved