为什么内部监听器(addAddress和cancelAddress)不工作? Everythings OK,但点击监听器膨胀viewStub无效。这些按钮添加在该viewStub中。在Android的另一个监听器中定义监听器
private View addressStubInflated;
//...
final View fview = inflater.inflate(R.layout.fragment_address, container, false);
//...
final ViewStub addressStub = (ViewStub) fview.findViewById(R.id.address_viewStub);
final Button addAddress = (Button) fview.findViewById(R.id.add_address_button);
final Button cancelAddress = (Button) fview.findViewById(R.id.cancel_address_button);
final ViewGroup addressesParent = (ViewGroup) fview.findViewById(R.id.addresses_container);
final Button addNewAddress = (Button) fview.findViewById(R.id.add_address);
addNewAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//some codes ... OK
if (addressStub.getParent() != null) {
addressStubInflated = addressStub.inflate(); //OK
} else {
addressStubInflated.setVisibility(View.VISIBLE); //OK
}
addressStub.setOnInflateListener(new ViewStub.OnInflateListener() {
@Override
public void onInflate(ViewStub viewStub, View view) {
addAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addressStubInflated.setVisibility(View.GONE); //not work
addNewAddress.setVisibility(View.VISIBLE); //not work
addressesParent.setVisibility(View.VISIBLE); //not work
}
});
cancelAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addressStubInflated.setVisibility(View.GONE); //not work
addNewAddress.setVisibility(View.VISIBLE); //not work
addressesParent.setVisibility(View.VISIBLE); //not work
}
});
}
});
}
});
请出示你的,你指定'addAddress' –
还添加日志语句转换成'onInflate',看看它打印 –
为什么不只需点击一下并检查点击视图的ID?意思是你可以有一个听众3个按钮,只需将其连接到所有3没有任何疯狂 –