【问题标题】:A Bundle is null after returning back from another activity从另一个活动返回后,Bundle 为空
【发布时间】:2019-04-08 09:35:09
【问题描述】:

我的捆绑包有问题。我有 2 个活动(带有片段),我想将数据存储在片段 FeedListFragment 中。

当我旋转屏幕时,它工作得很好,但是当我从另一个活动返回时,捆绑为空

@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    progressBar = view.findViewById(R.id.progressBar);

    if ( savedInstanceState == null ) {
        feedProviderViewModel.getAll().observe(this, feedProviders -> {
            feedEntryViewModel.deleteAll();
            RssDownloader rssDownloader = new RssDownloader(feedProviders, this, progressBar);
        });
    }

   ...
}

我也有 onSaveInstanceState

@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
    super.onSaveInstanceState(outState);
    Log.d("tag","Save instance state called");
    outState.putString(FIRST_RUN,"Downloaded");
}

【问题讨论】:

    标签: android android-intent bundle


    【解决方案1】:

    不要在使用 onBackPress 时使用意图从第二个活动返回到第一个活动

    btn_message.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
    

    否则,您必须将数据放入您已经从活动 1 发送的意图中

    btn_message.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            Intent intent = new Intent(this, YOUR ACTIVITY);
            intent.putExtra("bundle",bundle);
            startActivity(intent);
            }
        });
    

    将其保存在 SharedPreference 上的第三种方法

    【讨论】:

    • 好的,所以 onSaveInstanceState 只在我旋转屏幕时有效?
    • OnSaveinstance 根据用于在旋转设备不保存对象时保存 UI 状态的文档
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多