2014-10-11 2 views
0

У меня есть 5 мероприятий в моем приложении для Android. Деятельность A = Всплеск Деятельность B и деятельность C = взятие некоторых пользовательских данных Деятельность D и активность E показывают некоторые расчетные значения на основе информации пользователя, указанной в действии B и C. Деятельность B и C не будет отображаться пользователю после первый раз он запускает мое приложение. поэтому пользователь может вставлять свою информацию только один раз. (Это я сделал с использованием общих предпочтений) Теперь, когда я хочу, если пользователь нажмет кнопку «Назад» из «Действия D» и «E», снова, когда он запустит приложение, появится экран «Заставка» и переведите его непосредственно в «Действия D» и «E.». и Д.Android Backpress

Я делаю это в коде

@Override 
public void onBackPressed() { 
    AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    alert.setTitle("Do you want to exit"); 
    // alert.setMessage("Message"); 

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      // Your action here 
      Intent intent = new Intent(Intent.ACTION_MAIN); 
      intent.addCategory(Intent.CATEGORY_HOME); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
      finish(); 
      onDestroy(); 

      System.exit(0); 
     } 
    }); 

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) {} 
    }); 

    alert.show(); 

} 

так что этот код работает, но когда я начинаю мое приложение снова Заставка появляется = активность а и после этого перенаправить к My активность B и C активность тогда ,

Также я принял намерение в деятельности Splash для деятельности B, которая работает здесь. Я не хочу это. Пожалуйста, направляйте меня.

+0

Вы имеете в виду никогда не заниматься активностью B и C в конце вашего вопроса? – Darpan

+0

Да #Darpan Я не хочу, чтобы пользователи снова вводили туда данные, чтобы моя активность B и активность C запрашивали у пользователя формы. –

+0

, тогда ответ @mysticmagic будет работать, я думаю. Попробуйте. – Darpan

ответ

0

В вашей деятельности A (экран выплеска) проверить, если это первый запуск или нет, и перенаправить пользователь соответственно:

Первый раз, когда пользователь сохраняет данные в активности B и C, за исключением дополнительного булева вместе с вашим информация о пользователе:

SharedPreferences.Editor editor = getSharedPreferences("MyPrefs", MODE_PRIVATE).edit(); 
editor.putBoolean("firstRun", false); 
editor.commit(); 

Изменить код, где вы начинаете активность B, как это:

SharedPreferences shared_prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE); 
boolean firstRun= shared_prefs.getBoolean("firstRun", true); 
if(firstRun) 
{ 
    Intent i = new Intent(ActivityA.this,ActivityB.class); 
    startActivity(i); 
} 
else 
{ 
    Intent i = new Intent(ActivityA.this,ActivityD.class); 
    startActivity(i); 
} 

Надеется, что это помогает.

+0

Я постараюсь сделать это. Спасибо –

+0

MysticMagic любезно скажите мне, как я могу передать этот общий код предпочтения в public void onBackPressed() {} –

+0

Что в этом проблема? –