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

Android 同一 Activity 傳遞數值給另一個方法的標準做法

     編輯:程式設計疑難解答

問題

在同一個 Activity 中,如何將 Handler 內的數值傳遞給 initViews() 方法?

解決方案:方法參數傳遞

最直接、符合封裝原則的方式是 為目標方法新增參數,調用時傳入具體值。

程式碼示範

public class MainActivity extends AppCompatActivity {
    private Handler viewHandler = new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(Message msg) {
            int value = msg.what; // 假設從訊息取得
            initViews(value);     // 直接傳遞
        }
    };

    // 修改方法簽名,接收參數
    public void initViews(int value) {
        // 使用 value 進行初始化邏輯
        textView.setText("Value: " + value);
    }
    
    // 若需在多處調用,保留無參數版本或設預設值
    public void initViews() {
        initViews(0);
    }
}

替代方案(視情境選擇)

  • 成員變數:將值存為 private int pendingValue;,initViews() 讀取該欄位。適用於「異步產生、稍後統一初始化」場景。
  • EventBus / LiveData:跨組件通訊時使用,同一 Activity 內屬於過度設計。
  • Intent Bundle:僅適用於 Activity 間跳轉,同一實例不適用。

最佳實踐

  1. 優先使用 方法參數,依賴關係明確、易測試。
  2. 若參數超過 3 個,考慮封裝為資料類(data class 或 POJO)。
  3. 避免使用 static Map 做全域暫存,易造成記憶體洩漏與並發問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved