Мне нужно выполнить определенные действия в активити запущенном через Intent, но по каким то причинам информация присоединенная к интенту (в которой указано, что нужно выполнить) не передается. При запуске активити getIntent()
всегда равен null
. Не могу разобраться почему.
Так выглядит первый активити, из которого идет запуск второго:
public class Registration extends AppCompatActivity {
...
public void clickCloseButton(View view) {
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("startOperation", "DialogCloseRegistration");
startActivity(intent);
}
...
}
Так выглядит второй активити, в котором нужно выполнить действия после его запуска:
public class MainActivity extends BaseActivity {
...
@Override
protected void onResume() {
super.onResume();
// Действие при запуске активити
String operation = getIntent().getStringExtra("startOperation");
if (operation != null) {
if (operation.equals("DialogCloseRegistration")) {
DialogFragment closeRegistration = new CloseRegistration();
closeRegistration.show(getSupportFragmentManager(), "closeRegistration");
}
}
}
...
}
Так выглядят настройки второго запускаемого активити в манифесте:
<activity
android:name=".activity.MainActivity"
android:alwaysRetainTaskState="true"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="site.ru"
android:pathPrefix="/sms"
android:scheme="http" />
</intent-filter>
</activity>
У первого активити никаких настроек нет, кроме портретного режима.
Возможно это не важно, но MainActivity
уже запускался до того как был запущен Registration
.
Активность с режимами android:launchMode="singleInstance"
и "singleTop"
, будучи запущенной ранее, повторно не запускается, а получает вызов onNewIntent
- в этом методе Вы и получите новый интент с Вашими данными.
@Override
protected void onNewIntent(Intent intent) {
// делаем что нужно здесь
...........................
// либо меняем интент Activity, чтобы в onResume и далее
// getIntent() возвращал уже новый
setIntent(intent);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Необходимо организовать рассылку почты следующим образомПредположительно что модуль рассылки является частью существующего приложения
Почему при старте виджета с интегрированным Firebase Crashlytics выпадает это?
Задача извлечь то, что находится на месте "body" между "begin" и "end" в приведенном ниже коде, но никак не могу понять как составить регулярное выражение,...