動態創建的 Button 在 OnClickListener 中需記錄點擊次數,但監聽器無法返回值,局部變量無法持久化。
Button btn = new Button(context);
btn.setTag(0); // 初始計數
btn.setOnClickListener(v -> {
int count = (int) v.getTag();
count++;
v.setTag(count);
Log.d("ClickCount", "Button clicked " + count + " times");
});
public class ClickCounter {
private static final String TAG_KEY = "click_count_tag";
public static void increment(View view) {
int count = (int) view.getTag(TAG_KEY);
view.setTag(TAG_KEY, count + 1);
}
public static int getCount(View view) {
return (int) view.getTag(TAG_KEY);
}
}
使用 View.setTag(key, value)(API 21+)避免鍵衝突。
View 自帶的 Tag 機制輕量級存儲簡單狀態,無需外部 Map 或數據庫,適合計數、標記等場景。