我想先执行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会成功打开。
我需要的是在LoginActivity成功返回后打开FormActivity 。
答案 0 :(得分:1)
您需要startActivityForResult
。请在此处阅读:https://developer.android.com/training/basics/intents/result.html
可以在这里找到一个很好的例子:How to manage `startActivityForResult` on Android?
答案 1 :(得分:1)
您应该使用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
的Intent来处理启动其他Activity的任何数据结果
在Kotlin:
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