2016-06-16 12 views
0
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);   
/** 
    * Check for login session. If not logged in launch 
    * login activity 
    * */ 
    if (MyApplication.getInstance().getPrefManager().getUser() == null) { 
     launchLoginActivity(); 
     Log.e(TAG, "Still im in MainActivity !!! "); 
    } 
.... 
.... 

と、これは打ち上げの活動方法である:現在のアクティビティを終了し、別のアクティビティを開始するにはどうすればよいですか?

private void launchLoginActivity() { 
    Intent intent = new Intent(MainActivity.this, LoginActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
    Log.e(TAG, "launchLoginActivity"); 
    startActivity(intent); 
    finish(); 
} 

活動が開始されるが、私はまだ私の主な活動にしています。

コンソールで確認できるように、2つのログメッセージが表示されます。打ち上げ方法、および起動メソッドが呼び出された後、主な活動で、別の1で

一つ。

メインアクティビティを終了し、メインアクティビティでログメッセージを表示しないようにするにはどうすればよいですか?

The error

+0

チェック活動のライフサイクルhttps://developer.android.com/training/basics/activity-lifecycle/starting.html –

+0

あなたが ''フラグを使用してみてくださいですintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP) ; ''と( ''仕上げを除く); ''関数 –

答えて

2

あなたの主な活動は、最終的には、onCreate()からあなた終了後に終了します。メインアクティビティのonDestroy()にデバッグログを記録すると、そこに入ることがわかります。 2回目のアクティビティを呼び出した後にすべてをスキップしたい場合は、その後にreturnを入れます。 Activity.isFinishing() APIもあり、アクティビティが終了するとtrueを返します。その後、

-1

まあ、仕上げ()問題の活動と「のonCreate」メソッドのうち、活動の休憩を開始し、acitvityは、通常のライブサイクルで破壊されるように返します。

if (MyApplication.getInstance().getPrefManager().getUser() == null) { 
    launchLoginActivity(); //the finish part already happens here. I did not see that. 
    return; 
    Log.e(TAG, "Still im in MainActivity !!! "); 
} 
+1

提出者は、一度のために、問題のコードを読む –

+0

ことを行い、必要になりますか? –

+0

Whops、私はその行を見ていないようです。それはあなたがコーヒーを使わずに日を始めるために得られるものです:(そうです、以前の著者はそうです、メソッドコールの後に戻り値を追加してください。 – GPuschka

関連する問題