Android 在不显示的情况下启动活动

Android 在不显示的情况下启动活动,android,android-activity,Android,Android Activity,我有一个活动A,它启动活动B,活动B启动活动C。有没有办法不显示活动B。 我想要这种行为,因为如果活动B没有内容(例如ListView),请显示我在其中选择一些数据的活动C,然后按“上一步”按钮返回到活动B。 关键是我希望在活动堆栈上显示活动B,但在某些情况下不显示它。只需在活动B的onCreate()方法中调用startActivity()。它不会显示,但会在活动堆栈中显示。您可以调用startActivity,而无需调用布局的setContentView。希望这有帮助 不要为活动B设置set

我有一个活动A,它启动活动B,活动B启动活动C。有没有办法不显示活动B。 我想要这种行为,因为如果活动B没有内容(例如ListView),请显示我在其中选择一些数据的活动C,然后按“上一步”按钮返回到活动B。
关键是我希望在活动堆栈上显示活动B,但在某些情况下不显示它。

只需在活动B的
onCreate()
方法中调用
startActivity()
。它不会显示,但会在活动堆栈中显示。

您可以调用startActivity,而无需调用布局的setContentView。希望这有帮助

不要为活动B设置setContentView()

我找到了解决方案:

  • 活动A使用额外参数启动活动B(intent.putExtra(“something”,true))
  • 活动B:
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if(getIntent().hasExtra(“某物”)和&getIntent().getBooleanExtra(“某物”),false){
//表演活动B
setContentView(R.layout.activity_B);
}否则{
//不显示活动B,启动活动C
startActivityForResult(活动C,活动未初始化);//启动活动C
}
}
//当从活动C返回时,检查活动B是否已初始化

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ACTIVITY_NOT_INITIALIZED) {
        //show activity B
        setContentView(R.layout.activity_B);
  }
}
在你的舱单集中

android:theme="@android:style/Theme.NoDisplay"

<>你的活动。

然后返回到这个活动会有问题:)是真的,但是在活动C开始之前你会看到空白页半秒钟。我不要这个。返回不是问题,因为您可以在OnReSuMe()中处理它。然后返回到这个活动会遇到问题:)是真的,但是在活动C启动之前,您将看到空白页半秒钟。我不想要这个。你还需要用
extends Activity
扩展
Activity
扩展
AppCompactActivity
我得到这个:java.lang.RuntimeException:无法恢复活动{myActivity}:java.lang.IllegalStateException:活动{myActivity}在onResume()之前没有调用finish()Completing这是正确答案,您仍然可以扩展
AppCompatActivity
(至少可以从androidx扩展)。所有其他答案在推出新的活动之前仍然显示出活动的短暂闪光。