当前位置: 首页 > 知识库问答 >
问题:

Android-还原onSaveInstanceState为null的活动

赏夕
2023-03-14

我无法恢复我的一项活动的状态。我从活动A中开始活动B

mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
            // Display dialog
            AlertDialog.Builder builder = new AlertDialog.Builder(TransactionActivity.this);
            builder.setTitle(null)
                    .setItems(R.array.tran_options_array, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // The 'which' argument contains the index position
                            // of the selected item
                            switch (which) {
                                case 0:
                                    //
                                    // View
                                    //
                                    // Load transaction detail activity
                                    Intent intent = new Intent(getApplicationContext(),
                                            TransactionDetailActivity.class);
                                    Bundle bundle = new Bundle();
                                    Tran transaction = mTransactionList.get(position);
                                    bundle.putSerializable("transaction_key", mTransactionList.get(position));
                                    intent.putExtras(bundle);
                                    startActivity(intent);
                                    break;...

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putString("type", mType);
    super.onSaveInstanceState(outState);
}

startActivity(intent)之后,调用onPause(),然后调用onSaveInstanceState()。单击活动B上的“上一步”按钮,会导致在活动A中调用onDestroy(),然后再调用onCreate(),其中(Bundle savedInstanceState)为null。

共有1个答案

赫连冠玉
2023-03-14

您确定已调用onSaveInstanceState()吗?

从onSaveInstanceState()的文档中可以看出:

不要将此方法与活动生命周期回调混淆,例如onPause(),它总是在活动置于后台或在其销毁过程中调用,或者onStop()在销毁之前调用。[…]调用onPause()而不是onSaveInstanceState(Bundle)的一个示例是在活动A之前启动活动B:如果在活动A的生命周期内未终止,系统可能会避免对活动A调用onSaveInstanceState(Bundle),因为A的用户界面状态将保持不变。

 类似资料:
  • 问题内容: 你们有以下问题的解决方法吗? 在注册活动的onDestroy中(当用户按下后退按钮时),我调用一个新活动,以便用户可以输入当天的某些最终生产数据,然后通过电子邮件发送该报告。问题在于,在刚刚开始的活动中,对getIntent的调用返回null,而我必须从那里获取数据。 ================================================== ========

  • 我正在尝试启动一个活动,其中包括捆绑包。我正在尝试将这个捆绑包设置为空,因为还没有任何东西传递给这个活动。 目前,Android系统导致活动崩溃。未找到资源错误 编辑添加错误日志 08-24 10:39:33.180:E/AndroidRuntime(21177):致命异常:main 08-24 10:39:33.180:E/AndroidRuntime(21177):java。lang.Runt

  • 我试图显示我的firestore数据库的内容,它在ios上工作得很好,但android是空的,我已经按照https://rnfirebase.io/上的说明为android设置了T,我创建了多个新应用程序,但没有效果。 Firebase承认有2个应用程序连接,但无论我做什么,没有显示。 Ive更新了规则以接受任何连接,但仍然没有。还有人遇到过这个问题吗?任何需要的信息都可以提供,但看到这个应用程序

  • “还原”功能会先删除数据库已选择的对象,然后根据你的备份创建新的对象。最后,插入数据。 还原一个备份到现有的数据库或模式 在主窗口中,打开一个数据库或模式。 点击“备份”并选择一个现有的备份文件。 在对象工具栏点击“还原备份”。 选择还原选项并点击“还原”。 还原一个备份到新的数据库或模式 创建并打开一个新的数据库或模式。 点击“备份”。 右击对象选项卡的任意位置并选择“还原备份从”。 浏览备份文

  • “还原”功能会先删除数据库已选择的对象,然后根据你的备份创建新的对象。最后,插入数据。 还原一个备份到现有的数据库或模式 在主窗口中,打开一个数据库或模式。 点击“备份”并选择一个现有的备份文件。 在对象工具栏点击 。 选择还原选项并点击“开始”。 还原一个备份到新的数据库或模式 创建并打开一个新的数据库或模式。 点击“备份”。 按住 Control 键并点按对象选项卡的任意位置,然后选择“还原备

  • “还原”功能会先删除数据库已选择的对象,然后根据你的备份创建新的对象。最后,插入数据。 还原一个备份到现有的数据库或模式 在主窗口中,打开一个数据库或模式。 点击“备份”并选择一个现有的备份文件。 在对象工具栏点击“还原备份”。 选择还原选项并点击“开始”。 还原一个备份到新的数据库或模式 创建并打开一个新的数据库或模式。 点击“备份”。 右击对象选项卡的任意位置并选择“还原备份从”。 浏览备份文