LoadSir icon indicating copy to clipboard operation
LoadSir copied to clipboard

onReloadEvent 事件重写 点击特定view的事件 第一次无响应 ,第二次才触发 点击事件

Open voynich-chen opened this issue 3 years ago • 3 comments

/** * @param onReloadListener 拿到重试的监听 * @return r */ @Override public Callback setCallback(Context context, OnReloadListener onReloadListener) { this.onReloadListener = onReloadListener; return super.setCallback(context, onReloadListener); }

/**
 * @param context c
 * @param view    v
 * @return true or  false  返回true 则覆盖注册时的onReload,如果返回false则两者都执行,先执行onReloadEvent
 */
@Override
protected boolean onReloadEvent(Context context, View view) {
    Log.d("token-", "onReloadEvent: " + System.currentTimeMillis());
    (view.findViewById(R.id.tv_reload)).setOnClickListener(v -> {
        Log.d("token-2", "onReloadEvent: " + System.currentTimeMillis());
        onReloadListener.onReload(v);//去重试
    });
    return true;
}

第一次点击 log都出不来 点击第二次才触发点击事件

voynich-chen avatar Dec 08 '21 09:12 voynich-chen

一样

caolinxing avatar Mar 12 '22 07:03 caolinxing

rootView.setOnClickListener(v -> { if (onReloadEvent(context, rootView)) { return; } if (onReloadListener != null) { onReloadListener.onReload(v); } }); 在第一次点击之后才注册了 按钮的点击事件 //将Callback添加到当前视图时的回调,View为当前Callback的布局View @Override public void onAttach(Context context, View view) { super.onAttach(context, view); (view.findViewById(R.id.tv_reload)).setOnClickListener(v -> { Log.d("token-2", "onReloadEvent: " + System.currentTimeMillis()); onReloadListener.onReload(v);//去重试 }); }

ClownMonkeys avatar Nov 17 '22 02:11 ClownMonkeys

解决方案 在这里使用点击事件 loadService.setCallBack(EmptyCallback.class, new Transport() { @Override public void order(Context context, View view) { Button btn= (TextView) view.findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context.getApplicationContext(), "It's your gift! :p", Toast.LENGTH_SHORT).show(); } }); } });

caolinxing avatar Apr 25 '23 04:04 caolinxing