就像他的回答中提到的@micro.pravi 一样,您可以ProgressBar
在布局内部实现。要在方向更改后保持状态,您必须使用onSaveInstanceState
并onRestoreInstanceState
保存和恢复重要值,即私有变量,如private boolean isChecking
public class MyActivity extends Activity {
public boolean isProcessing;
@Override
public void onCreate(Bundle stateBundle) {
super.onCreate(stateBundle);
// Set Layout
setContentView(R.layout.main);
if(stateBundle!=null) {
// read your data here from the bundle
isProcessing = stateBundle.getBoolean("isProcessing");
}
setUiState(isChecking);
}
@Override
protected void onRestoreInstanceState(Bundle stateBundle) {
// Second value of getBoolean is the default value
isProcessing = stateBundle.getBoolean("isProcessing", false);
super.onRestoreInstanceState(stateBundle);
}
@Override
protected void onSaveInstanceState(Bundle stateBundle) {
// Save the critical data
stateBundle.putString("isProcessing", isProcessing);
super.onSaveInstanceState(stateBundle);
}
@Override
protected onResume() {
setUiState(isProcessing);
}
private setUiState(boolean processing) {
textView.setEnabled(!processing);
button.setEnabled(!processing);
progressbar.setVisibility(processing?View.VISIBLE:View.GONE);
}
}
这应该用于保存有关方向更改或应用程序被杀死并稍后由操作系统恢复时的任何关键数据。您不必保存TextView
数据,因为默认视图元素已经自己处理了这个。也不要以这种方式存储图像数据。而是存储 Uri 或 URL 的路径并在还原时加载它