ViewStub从头到位就只能加载一次是吗?设置了隐藏之后再重新加载程序还是会崩溃是不是因为这个原因?在实际开发中应该如何避免或者是解决这个问题呢?
public void onClick(View v){
if(flag){
stub.inflate();
flag = false;
}else{
stub.setVisibility(View.GONE);
flag = true;
}
}
public void onClick(View v){
if(flag){
stub.inflate();
flag = false;
}else{
stub.setVisibility(View.GONE);
flag = true;
}
}
2015-11-26
ViewStub只能加载一次,当把这个外部布局文件inflate后,它就已经存在于内存中了,可以定义一个属性去标识它,如果没加载时就inflate,加载完成后就setVisibility来控制显示或隐藏。比如show_button最开始其显示内容是“显示”。部分代码如下:
private Button show_button;
private ViewStub viewStub;
private View view = null;
@Override
public void onClick(View v) {
if (view == null) {
view = viewStub.inflate();
show_button.setText("隐藏");
} else {
if ("显示".equals(show_button.getText())) {
view.setVisibility(View.VISIBLE);
show_button.setText("隐藏");
} else if ("隐藏".equals(show_button.getText())) {
view.setVisibility(View.INVISIBLE);
show_button.setText("显示");
}
}
}举报