我在另一个片段中有一个片段。因为我在其他地方重复使用它。
片段A包含一个Button和一个onClickListener;片段B包含一个表单(许多字段)。片段A调用片段B以及一个侦听器(遵循B中的接口)-在字段完成(即失去焦点)时触发。
片段A :(提取)
button.setOnClickListener(v -> {
process();
});
Fragment fragmentB = FragmentB.newInstance(new FragmentB. onFragmentB()
{
@Override
public void gotValue(String key, String value)
{
store(key, value);
}
}
loadFragment(fragmentB, R.id.my_child_frame_layout);
片段B :(提取)
interface onFragmentB
{
public void gotValue(String key, String value);
}
private onFragmentB listener;
fieldA.setOnFocusChangeListener((view, b) -> {
if (!b)
listener.gotValue((String) ((TextView)view).getHint(), ((TextView)view).getText().toString().trim());
});
通过此设置,应用可以显示表单(来自B)和按钮(来自A)。轻按按钮会触发事件并处理字段值。
问题是按钮事件之前(通过B的onFocus ...)未捕获到最后一个字段(在B上)的值。 (如果用户按下Tab键或点击另一个字段,则该值将传输为OK,并且一切正常。)
在所有字段完成后,如何强制触发按钮事件。也许有一种更好的方式为这些事件编写代码。