2017-01-26 32 views
1

У меня есть макет входа, который нужно увидеть в течение 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();  
    } 
+0

Если вы знаете, как его перезапустить с помощью кода, тогда вы должны поместить его в метод 'onResume' – Roljhon

ответ

1

onCreate будет выполняться только в первый раз, когда ваша деятельность будет создана, но когда вы вернетесь к этой деятельности, то onCreate не будет выполнен повторно.

так overrideonstart метод 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 вместо интернализации их каждый раз, когда в вашем таймере анонимный класс

0

переместите CountDownTimer внутри onStart() Методы, аналогичные этому:

@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(); 
    }