如何设置事件的优先级?

时间:2018-10-09 19:39:13

标签: android android-fragments onclicklistener onfocuschangelistener

我在另一个片段中有一个片段。因为我在其他地方重复使用它。

片段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,并且一切正常。)

在所有字段完成后,如何强制触发按钮事件。也许有一种更好的方式为这些事件编写代码。

0 个答案:

没有答案