【发布时间】:2014-06-08 17:43:31
【问题描述】:
我有三种布局:
Layout1
-->onClick()-->show
Layout2
-->wait three seconds-->show
Layout3
问题是没有显示 Layout2。要设置我使用的布局
setContentView(int);
相关代码可能是:
public class TrainingActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout1);
final Button inputButton = (Button)findViewById(R.id.inputButton);
inputButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
changeLayouts();
}
});
}
public void changeLayouts() {
setContentView(R.layout.layout2);
try {
TimeUnit.MILLISECONDS.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
setContentView(R.layout.layout3);
}
}
我的想法是,Android 可能会使用类似“Event-Loop”(如 Qt)的东西,而我的方法会阻止控件返回到“Event-Loop”,这将使布局显示。 但我找不到我的错误。
【问题讨论】:
-
重新思考您的设计。为什么首先要为同一个活动多次设置内容视图?
-
我不确定为什么这会失败,我很惊讶它没有抛出 NotResponding。如果您希望某些操作在三秒暂停后触发 UI 操作,请考虑使用 AsyncTask。