我在我的应用中的两个不同buttons
中使用了两个id
layouts
,当点击第一个时,应用加载第二个{{1}当点击第二个layout
中具有相同button
的{{1}}时,它会加载第一个id
文件。但是,我的问题是这种切换只发生一次,之后按钮没有做任何事情。您是否知道在每次点击layout
时我可以如何调用这些 onClickListeners ,直到用户离开该活动?
CardViewActivity.java:
layout
答案 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;
}
}
很抱歉,如果我弄错了一些逻辑 - 这种情况下的关键是以一种说话方式设置点击监听器"递归"这可以确保每次点击后都会设置一个监听器