StatusUI icon indicating copy to clipboard operation
StatusUI copied to clipboard

点击事件无法监听

Open caption-dylan opened this issue 8 years ago • 3 comments

StatusProvider

if(p instanceof FrameLayout){
    this.container = (FrameLayout) p;
    this.callback.onCreate(0, getStatusView());
 }else{
    throw new RuntimeException(contentView.getClass().getName() + "必须作为FrameLayout的子元素");
 }

在 StatusProvider类的构造方法中添加了 this.callback.onCreate(0, getStatusView());

设置点击事件,无响应

public void onCreate(int status, View statusView) {
    TextView tv = (TextView) statusView.findViewById(R.id.btn_retry);
    tv.setOnClickListener(new View.OnClickListener() {
    @Override
     public void onClick(View v) {
         Toast.makeText(MainActivity.this, "1231231321", Toast.LENGTH_LONG).show();
     }
});

这里的点击事件无法监听。

不知道是怎么回事呢?

caption-dylan avatar Nov 12 '16 09:11 caption-dylan

this.callback.onCreate(0, getStatusView()); 改成 this.callback.onCreate(0, statusView);

getStatusView()又重新生成一个View了,但显示的还是第一次getStatusView()的View,估计就这个原因了

不好意思,这个库放这里也不维护了,代码都放在公司项目的库里维护了

cowthan avatar Nov 14 '16 14:11 cowthan

getStatusView这个方法名起的也不好,容易造成误解,应该是createStatusView

cowthan avatar Nov 14 '16 14:11 cowthan

嗯,是的,这样修改就可以了

public void showStatusView(){
    if(statusView == null){
        statusView = getStatusView();
        this.callback.onCreate(status, statusView);
        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
        container.addView(statusView, lp);
    }
    statusView.setVisibility(View.VISIBLE);
    statusView.bringToFront();
}

在 showStatusView 方法中添加这句话就可以 this.callback.onCreate(status, statusView);

caption-dylan avatar Nov 16 '16 07:11 caption-dylan