2011-11-03 15 views
5

アプリが起動または再開すると、 'SharedPrefences'に設定された変数に基づいて特定の「アクティビティ」にリダイレクトします。特定のアクティビティでAndroidアプリを起動する

private void launchRedirect(Context ctxt) { 

    Integer status = AppPreferences.getStatus(this); 
    Intent i = new Intent(MainActivity.this, Activity1.class); 

    switch (status) { 
    case 0: 
     i = new Intent(MainActivity.this, Activity2.class); 
    case 1: 
     i = new Intent(MainActivity.this, Activity3.class); 
    case 2: 
     i = new Intent(MainActivity.this, Activity4.class); 
    case 3: 
     i = new Intent(MainActivity.this, Activity5.class);  
    } 
    startActivity(i); 
} 

そして私は、内のすべての活動のために各「onResume」メソッドでこのメソッドを呼び出すことができます。私はSharedPreferences状態変数をチェックし、正しい活動にリダイレクトする方法を持っ考慮してこれを行うには

私のアプリは:

public void onResume(Bundle savedInstanceState) { 
    launchRedirect(this); 
} 

これは、彼らはそれを呼び出すとき、それはonResume呼び出し、それは、現在のユーザーに対応する状態にリダイレクトされるので、ユーザーは技術的には、最後の活動に戻ることができないことを意味します。

これはいくつかの循環的なバグにつながる可能性があると思いますが、これを行うより良い方法はありますか?

+0

良い質問ですので、+1 –

答えて

5

この状況でMainActivityを閉じる必要がある場合は、finish()メソッドの呼び出しを追加することができるという点を除いて、通常の方法です。

また、break文を忘れないでください:

private void launchRedirect(Context ctxt) { 

    Integer status = AppPreferences.getStatus(this); 
    Intent i = new Intent(MainActivity.this, Activity1.class); 

    switch (status) { 
    case 0: 
    i = new Intent(MainActivity.this, Activity2.class); 
    break; 
    case 1: 
    i = new Intent(MainActivity.this, Activity3.class); 
    break; 
    case 2: 
    i = new Intent(MainActivity.this, Activity4.class); 
    break; 
    case 3: 
    i = new Intent(MainActivity.this, Activity5.class); 
    break; 
    } 
    startActivity(i); 
    if (/* check if MainActivity should be closed */) { 
    finish(); 
    } 
} 
+1

ああ良い点。ありがとう。また、まだ投票するのに十分な代理店ポイントがありません。 – Asha

+0

ええ、この質問は私に十分なrepポイントを与えた:)あなたの助けをありがとう – Asha

+1

あなたは非常に歓迎されています:)また、私の答えを正解として承認することはできますか? – morphium

1

あなたのナビゲーションactivtiyごとに優先値を更新していることを確認してください。これにより、アクティビティの起動に必要なチェックが不要になります。

関連する問題