多次调用Button的OnClickListener

时间:2018-01-24 21:07:59

标签: java android android-layout android-studio button

我在我的应用中的两个不同buttons中使用了两个id layouts,当点击第一个时,应用加载第二个{{1}当点击第二个layout中具有相同button的{​​{1}}时,它会加载第一个id文件。但是,我的问题是这种切换只发生一次,之后按钮没有做任何事情。您是否知道在每次点击layout时我可以如何调用这些 onClickListeners ,直到用户离开该活动

CardViewActivity.java:

layout

1 个答案:

答案 0 :(得分:1)

要避免此问题,您需要确保分配给按钮OnClickListener始终为" new"中的按钮设置OnClickListener。布局

我还没有对此进行测试,但它似乎应该在理论上起作用。尝试将听众定义为您班级的私人成员,然后在onCreate中设置,例如arrowButton.setOnClickListener(arrowClickListener);

private void arrowClickListener = new View.OnClickListener(){
    @Override
    public void onClick(View view) {
        // clicked buttton -- pick layout based on button "state"
        int resId = isBtnClicked ? R.layout.cardview_expand_details : R.layout.cardview_refined;

        // set the contentview with the layout we determined earlier
        setContentView(resId);

        // If we're in the "normal" view, find the card art view and set our field to it
        if (!isBtnClicked){
            cardArtImageView = findViewById(R.id.cardArtImageView);
        }

        // do other initialization stuff
        viewDefinitions(isBtnClicked);
        initCardViewData(selectedItemPosition);
        setSelectedViewsInit();

        // set our new arrow button click listener to this listener
        arrowButton.setOnClickListener(arrowClickListener);

        // toggle button flag
        isBtnClicked = !isBtnClicked;
    }
}

很抱歉,如果我弄错了一些逻辑 - 这种情况下的关键是以一种说话方式设置点击监听器"递归"这可以确保每次点击后都会设置一个监听器