gpt4 book ai didi

Android View 在 onClick 内部是脏的

转载 作者:行者123 更新时间:2023-12-05 07:45:47 26 4
gpt4 key购买 nike

我想检查一些 EditText 中的文本是否在用户单击一些 Button 后发生了变化。但是如果在 onClick 中调用,View#isDirty 似乎不会返回 EditText 的正确状态。例如,我写了这样的东西:

public class MainActivity extends Activity {
EditText editText;
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.f);
editText = (EditText) findViewById(R.id.e);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println((editText.isDirty() ? "is dirty" : "is clean"));
}
});
}
}

在我对 editText 进行任何更改之前,它会按预期输出 is clean。但是即使我在 editText 中写了一些东西,也会打印同样的 is clean
isDirty 什么时候被调用?这是执行此操作的正确方法吗?

更新:

我还想检查一些 SwitchSpinner 值是否发生了变化。 isDirty() 是执行此操作的正确方法吗?

最佳答案

当您单击按钮时,编辑文本不再脏 - 文本已经更新并且 View 已重绘。也许如果您更改您的 onclick 处理程序,您会更好地理解正在发生的事情。

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText = (EditText) findViewById(R.id.e);
System.out.println((editText.isDirty() ? "is dirty" : "is clean"));
}
});

isDirty 只有在 View 未被重绘时才会返回 true。这种情况发生得很快,基本上你没有(也不需要)对此有任何控制。我认为你需要使用一些其他方法来实现你想要的。

关于Android View 在 onClick 内部是脏的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41332633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com