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

Android EditText 獲取文字為空:變數捕獲時機錯誤,應在點擊事件內讀取

     編輯:程式設計綜合問答

錯誤代碼

EditText fr1 = findViewById(R.id.fraction1);
final String s = fr1.getText().toString(); // 在 onCreate 讀取,此時輸入框為空

btn.setOnClickListener(v -> result.setText(s)); // 永遠是空字串

修正:在點擊事件內讀取最新文字

Button btn = findViewById(R.id.getresult);
EditText fr1 = findViewById(R.id.fraction1);
TextView result = findViewById(R.id.result);

btn.setOnClickListener(v -> {
    String input = fr1.getText().toString().trim(); // 此時讀取最新輸入
    result.setText(input);
});

進階:封裝獲取方法

private String getInputText() {
    return fr1.getText().toString().trim();
}

btn.setOnClickListener(v -> result.setText(getInputText()));

常見錯誤模式

錯誤正確
在 onCreate 讀取 EditText 文字存入 final 變數在事件監聽器內即時讀取
匿名內部類捕獲局部變數需 final,誤以為會自動更新Java 閉包捕獲的是變數值,非引用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved