2015-03-20 2 views
0

У меня есть приложение. Когда мое приложение запускается, я показываю и заставки. Когда мой экран заставки заканчивается, я начинаю свою основную деятельность. Но у меня проблема. Когда я поворачиваю свое приложение в заставке, мое приложение перезапускает и четыре senconds позже, начните свою новую деятельность. Если я три раза закрою свой заставку, начните три основных действия.Начать новую активность, когда заставка закладок завершена

Я хочу начать только одно действие, как я могу это сделать?

Это мой код заставки:

public class Splash extends Activity { 

public static final int seconds=4; 
public static final int miliseconds=seconds*1000; 

private ProgressBar progressBar; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 

    progressBar=(ProgressBar) findViewById(R.id.progressBar); 
    progressBar.setMax(seconds-1); 
    progressBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN); 

    startAnimation(); 
} 

public void startAnimation(){ 
    new CountDownTimer(miliseconds,1000){ 
     @Override 
     public void onTick(long millisUntilFinished) { 
      //progressbar update--->1 second 
      progressBar.setProgress(getMiliseconds(millisUntilFinished)); 
     } 

     @Override 
     public void onFinish() { 
      Intent i = new Intent(Splash.this, MainActivity.class); 
      Splash.this.startActivityForResult(i,1); 
     } 
    }.start(); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    //when I return to the MainActivity, finish my app 
    if(requestCode==1) finish(); 
} 

public int getMiliseconds(long milis){ 
    return (int) ((milisegundos-milis)/1000); 
} 

}

+0

Смотреть это ... http://stackoverflow.com/questions/22279077/android-splash-screen -to-activity –

+1

Будет изменено изменение поворота телефона, которое снова создаст вашу активность oncreate. –

+0

Ссылка [http://stackoverflow.com/questions/151777/saving-activity-state-in-android](http://stackoverflow.com/questions/151777/saving-activity-state-in-android) ссылка , – Yugesh

ответ

0

Попробуйте

Intent i = new Intent(Splash.this, MainActivity.class); 
startActivity(i); 
finish(); 
1

Использование configchanges в вашей деятельности в теге Manifest.xml

Пример

<activity 
    android:name=".Splash" 
    android:label="@string/app_name" 
    android:configChanges="keyboardHidden|orientation" /> 

вы можете использовать этот тег на другой деятельности, а также, если вы хотите, чтобы избежать OnCreate снова и снова

+0

Спасибо! Он отлично работает =) –

0

В AndroidManifest.xml, вам необходимо установить ориентацию на определенную ориентацию. Добавьте в android:screenOrientation="portrait" под материал для вашей деятельности. Например, моя деятельность может выглядеть это сейчас:

<activity 
    android:name=".SplashScreen" 
    android:label="@string/app_name" 
    android:screenOrientation="portrait" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Если вы находитесь в ландшафтном режиме, используйте android:screenOrientation="landscape".

Если это не работает, в методе onFinish(), используйте следующее:

@Override 
public void onFinish() { 
    Intent i = new Intent(Splash.this, MainActivity.class); 
    startActivity(i); 
    finish(); 
} 
Смежные вопросы