Я хочу сначала выполнить login_activity, а затем такую form_activity.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Check Login
val intent = Intent(this, LoginActivity::class.java)
startActivity(intent)
// After login, call FormActivity
val intent2 = Intent(this, FormActivity::class.java)
startActivity(intent2)
}
Моя проблема в том, что если я запустил это, приложение напрямую откроет FormActivity, однако, если я закомментирую вызов FormActivity, тогда LoginActivity откроется успешно.
Мне нужно открыть FormActivity Только после успешного возврата LoginActivity.
если вы пытаетесь проверить, вошел ли ваш пользователь уже в систему или нет! вероятно, вам следует прочитать концепцию создания сеансов с использованием хранилища предпочтений
Затем вам нужно запустить действие формы после успешного входа в систему, а не сразу.
Вам нужен startActivityForResult. Читайте здесь: https://developer.android.com/training/basics/intents/result.html
Здесь можно найти очень хороший пример: Как управлять startActivityForResult на Android?
Это правильный ответ, но он может быть более полезным на небольшом примере.
Добавлен пример ссылки.
Вам следует использовать startActivityForResult(). По сравнению с startActivity(), startActivityForResult принимает дополнительный целочисленный аргумент в качестве кода запроса, который идентифицирует ваш запрос к действию. Вам также необходимо переопределить метод onActivityResult() для обработки вызванного завершения действия.
Пример запуска активности на результат:
static final int MY_REQUEST_CODE = 1;
public void foo(){
Intent someIntent = new Intent(YOUR_INTENT_HERE);
startActivityForResult(someIntent, MY_REQUEST_CODE);
}
Обработайте результат
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (requestCode == MY_REQUEST_CODE){
bar();
}
}
Вы используете код запроса, а также намерение под названием data для обработки любых данных, полученных в результате запуска другого действия.
В Котлине:
companion object{
private const val MY_REQUEST_CODE = 1;
}
fun foo(){
val someIntent = Intent(YOUR_INTENT_HERE)
startActivityForResult(someIntent, MY_RESULT_CODE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?){
if (requestCode == MY_REQUEST_CODE){
bar()
}
}
Для получения дополнительной информации: https://developer.android.com/training/basics/intents/result.html#ReceiveResult
ну просто поместите это второе намерение в метод onCreate для действия формы