2016-08-27 4 views
0

私はLoginActivityとMainActivityという2つのアクティビティを持っています。私は、アプリが初めて開かれた場合はLoginActivityを起動し、そうでない場合はランチャーMainActivityを起動したいと考えています。私は次のコードで実装しました:初めてアプリを起動したときにランチャーの動作を変更するにはどうすればよいですか?

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.id.activity_login); 

    SharedPreferences pref = getPreferences(MODE_PRIVATE); 
    if (pref.getBoolean("firstOpen", true)) { 
     SharedPreferences.Editor editor = pref.edit(); 
     editor.putBoolean("firstOpen", false); 
     editor.apply(); 

     // do some login work 

     Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
     startActivity(intent); 

     finish(); 
    } 
} 

しかし、ここで質問ですが、画面がstartActivityを呼び出すことによって引き起こされる、点滅します。だから私はこの迷惑な移行を排除することができる方法はありますか? 多くの感謝!

+0

コールこの上記 'setContentView(R.id.activity_login);' –

+0

この 'setContentView(R.id.activity_login)を呼び出すことはありません。代わりに'この行を 'if'条件の下に置いてください。 2秒間黒い画面が表示される場合は、デフォルトテーマまたはスプラッシュイメージを使用してみてください。あなたはランチャーのアクティビティを変更することはできません – Prashant

+0

@Prashantスプラッシュ画面は良いです。しかし、2つのアクティビティのみを使用しているユーザー –

答えて

0

setContentView(R.id.activity_login);を呼び出す前に、最初にアプリを開いたことを確認してください。

このようにしてください。

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    SharedPreferences pref = getPreferences(MODE_PRIVATE); 
    if (pref.getBoolean("firstOpen", true)) { 
     SharedPreferences.Editor editor = pref.edit(); 
     editor.putBoolean("firstOpen", false); 
     editor.apply(); 

     // do some login work 

     Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
     startActivity(intent); 

     finish(); 
    }else{ 
     setContentView(R.id.activity_login); 
    } 
} 
このような
1

使用SharedPreferences:

if (pref.getBoolean("firstOpen", true) { 
       overridePendingTransition(0, 0); 
       startActivity(new Intent(getApplicationContext(), MainActivity.class)); 
       finish(); 
      } 
+0

これは、OPが避けようとしていることです。 – Shaishav

関連する問題