我有一个入口布局,需要看3秒钟。如果我启动应用程序,它会保持 3 秒并且activity
发生变化,没关系,但问题是,如果我在使用应用程序时通过智能手机的反向按下回到这个activity
avtivity
3 秒后不会改变。我是新来的,找不到问题?你能帮帮我吗?谢谢
public class A1CoverPage extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a1cover_page);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.a0action_bar);
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
EditText mTextField = (EditText) findViewById(R.id.editText);
mTextField.setText(" Loading... ");
ImageView mImageView = (ImageView) findViewById(R.id.imageView);
mImageView.setImageResource(R.drawable.amblem);
}
public void onFinish() {
Intent intent = new Intent(A1CoverPage.this, A2ExperimentCalibration.class);
startActivity(intent);
}
}.start();
}
onCreate
只会在创建活动时第一次执行,但是当您回到此活动时,onCreate
将不会再次执行。
因此override
onstart
Activity
的方法,并将代码移动到onstart
EditText mTextField;
ImageView mImageView;
// ^^^^ declare views references
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a1cover_page);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.a0action_bar);
mTextField = (EditText) findViewById(R.id.editText);
mImageView = (ImageView) findViewById(R.id.imageView);
// ^^^ initialize views
}
@Override
protected void onStart() {
super.onStart();
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText(" Loading... ");
mImageView.setImageResource(R.drawable.amblem);
}
public void onFinish() {
Intent intent = new Intent(A1CoverPage.this, A2ExperimentCalibration.class);
startActivity(intent);
}
}.start();
}
改进:在类中声明您的视图并在onCreate
中初始化它们,而不是每次在计时器匿名类中内化它们
onStart()
方法中移动CountDownTimer
类似于以下内容:
@Override
public void onStart() {
super.onStart();
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
EditText mTextField = (EditText) findViewById(R.id.editText);
mTextField.setText(" Loading... ");
ImageView mImageView = (ImageView) findViewById(R.id.imageView);
mImageView.setImageResource(R.drawable.amblem);
}
public void onFinish() {
Intent intent = new Intent(A1CoverPage.this, A2ExperimentCalibration.class);
startActivity(intent);
}
}.start();
}