Как изменить динамическую работу запуска?

Я работаю над Android-приложением. Я хочу динамически изменять действие «Начать». Я имею в виду, когда пользователь впервые запускает приложение, а затем начинает активность, и когда начнется второй раз, начните изменение активности. Это пропустит первые два действия и переместится на третью активность. Как я могу это достичь.

Solutions Collecting From Web of "Как изменить динамическую работу запуска?"

Динамическое изменение первого действия невозможно, но вы можете создать прозрачную операцию следующим образом:

<activity android:name=".ActivityLauncher" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

И выберите следующую активность в методе onCreate :

 if ( logged() ) { intent = new Intent(this,MainActivity.class); } else { intent = new Intent(this,SignInActivity.class); } startActivity(intent); finish(); 

Вы можете использовать SharedPreference в соответствии с вашими требованиями.

Вы можете сохранять и получать значения из этой ссылки

Внутри каждого Oncreate() вашей деятельности вы можете проверить значение SharedPreference и начать там свою деятельность.

Надеюсь, это поможет вам.

Используйте настройки для сохранения значений (условий), которые вы хотите использовать. То в соответствии с этим измените startActivity.

Использовать sharedpreference при первом входе в систему или нет

  if (!checkNameInfo()) { //first time FirstActivity(); } else { //second time Intent i = new Intent(first.this, second.class); startActivity(i); finish(); } 

Проверьте значение

 private final boolean checkNameInfo() { boolean role = mPreferences.contains("Name"); if (role) { return true; } return false; } 

IN firstActivity

 SharedPreferences.Editor editor = mPreferences.edit(); editor.putString("Name", edt.getText().toString()); editor.commit(); Intent i = new Intent(first.this, second.class); startActivity(i); 

Это то, что я делаю, когда пользователь выбрал флажок « Запомнить меня» на экране входа в систему.

Чтобы сохранить значение в файле SharedPreference :

Вам нужно будет сделать что-то вроде этого один раз в первом Activity и один раз во втором Activity

 sharedPrefs = getApplicationContext().getSharedPreferences(PRIVATE_PREF, Context.MODE_PRIVATE); // EDITOR INSTANCE TO SAVE THE NAG SETTING editor = sharedPrefs.edit(); // GET THE NAG SETTING CHECKBOX if (chkbxNagSetting.isChecked()) { editor.putBoolean(NAG_SETTING, true); } else { editor.putBoolean(NAG_SETTING, false); } editor.commit(); 

Чтобы получить значение из файла SharedPreference :

 boolean blNagSetting = sharedPrefs.getBoolean(NAG_SETTING, false); if (blNagSetting == true) { Intent startMainPage = new Intent(SignIn.this, SplashScreen.class); startMainPage.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(startMainPage); finish(); } 

И это необходимые глобальные переменные / экземпляры, используемые в Управлении:

 SharedPreferences sharedPrefs; Editor editor; private static final String PRIVATE_PREF = "CHANGE_TO_SOME_FILE_NAME"; private static final String NAG_SETTING = "nag_setting"; 

Вам придется немного изменить код, чтобы пропустить 2 Activities .

Дайте мне знать, если вам нужна помощь.

Независимо от того, что сначала откройте ваше приложение в главной деятельности. Между тем используйте SharedPreference, чтобы сохранить данные о том, сколько раз вы загрузили приложение.

Вы должны будете что-то сделать, как показано ниже в своем

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String dataAvailable; SharedPreferences prefs = getSharedPreferences("countPref", Context.MODE_PRIVATE); dataAvailable = prefs.getString("dataAvailable", null); //checking whether launching for the first time. if(dataAvailable!=null){ int appLoadedCount = prefs.getInt("appLoadedCount", -1); appLoadedCount++; prefs.edit().putInt("appLoadedCount", appLoadedCount).commit(); // Check how many times loaded if(appLoadedCount==0){ Intent firstAct = new Intent(MainActivity.this, FirstActivity.class); startActivity(firstAct); } else if(appLoadedCount==1){ Intent scndAct = new Intent(MainActivity.this, ScndActivity.class); startActivity(scndAct); } else if(appLoadedCount==2){ Intent thirAct = new Intent(MainActivity.this, ThirdActivity.class); startActivity(thirAct); } else{ Intent thirAct = new Intent(MainActivity.this, ThirdActivity.class); startActivity(thirAct); } Log.v("avilable", dataAvailable); Log.v("avilable", String.valueOf(appLoadedCount)); } else{ //loading first time prefs.edit().putString("dataAvailable", "yeap").commit(); //setting the count to 1 as loaded for the firs time prefs.edit().putInt("appLoadedCount", 0).commit(); Log.v("Not avilable", "Loaded first time"); } } 

Нет необходимости, чтобы у Activity был файл макета. У вас может быть проверка состояния в вашей активности запуска и перенаправление на другую деятельность на основе условия. (Переход от активности запуска к активности состояния не будет заметен, хотя).

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent; if (condition) { intent = new Intent(this, FirstClass.class); } else { intent = new Intent(this, SecondClass.class); } startActivity(intent); finish(); // note we never called setContentView() } 

Другая деятельность (FirstClass / SecondClass):

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }