启动活动而不显示它

Mat*_*stl 14 android android-activity

我有一个活动A,它启动活动B,活动B启动活动C.有没有办法不显示活动B.我想要这种行为,因为如果活动B没有内容(例如ListView),则显示活动C on我选择了一些数据,然后按回按钮返回活动B.重点是我想在活动堆栈上有活动B,但在某些情况下不显示它.

Mat*_*stl 17

我找到了解决方案:

  • 活动A使用额外参数启动活动B(intent.putExtra("something",true))
  • 活动B:
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getIntent().hasExtra("something") && getIntent().getBooleanExtra("something", false) {
            //show activity B
        setContentView(R.layout.activity_B);
    } else {
            //don't show activity B, start activity C
        startActivityForResult(activity_C, ACTIVITY_NOT_INITIALIZED); //start activity C
    }
}
Run Code Online (Sandbox Code Playgroud)

//从活动C返回时,检查活动B是否已初始化

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ACTIVITY_NOT_INITIALIZED) {
        //show activity B
        setContentView(R.layout.activity_B);
  }
}
Run Code Online (Sandbox Code Playgroud)


Omi*_*idi 13

在你的清单集中

android:theme="@android:style/Theme.NoDisplay"
Run Code Online (Sandbox Code Playgroud)

为了你的活动.

  • 你还需要扩展`Activity`而不是'AppCompactActivity` (4认同)
  • 使用`extends Activity` 我得到这个: java.lang.RuntimeException: Unable to resume Activity {myActivity}: java.lang.IllegalStateException: Activity {myActivity} did not call finish() before onResume() 完成 (4认同)