【问题标题】:Is it possible to setArguments() on onActivityResult() and pass it to Fragment?是否可以在 onActivityResult() 上 setArguments() 并将其传递给 Fragment?
【发布时间】:2020-06-21 03:18:00
【问题描述】:

是否可以在 onActivityResult() 上设置 Arguments() 并将其传递给 片段活动?

从我的 SecondActivity,我通过 onBackPressed() 将一个包传递给我的 FirstActivity。

  @Override
    public void onBackPressed() {

        Bundle bundle = new Bundle();
        bundle.putString("SORT_VALUE", SORT_BY_VALUE);
        bundle.putString("SORT_BY", sortby);
        bundle.putString("FROM_SORT", "FROM_SORT");
        Intent intent = new Intent();
        intent.putExtras(bundle);
        setResult(RESULT_OK, intent);
        back();
        super.onBackPressed();
    }

我有这段代码 onActivityResult()。

if (requestCode == SORT_RESULT) {
                if (data != null && data.getExtras() != null) {
                    Bundle bundle = data.getExtras();
                    SORT_VALUE = bundle.getString("SORT_VALUE");
                    sortby = bundle.getString("SORT_BY");
                    FILTER_VALUE = bundle.getString("FILTER_VALUE");
                    filterby = bundle.getString("FILTER_BY");


                    final ProductListFragment frg = new ProductListFragment();;

                    Bundle extra = new Bundle();
                    extra.putString("SORT_VALUE", SORT_VALUE);
                    extra.putString("SORT_BY", sortby);
                    frg.setArguments(extra);

                    if (SORT_VALUE != null) {
                        if (SORT_VALUE.equalsIgnoreCase("Popularity")) {
                            setSortValueAndSortBy("Popularity", "fmcg-campaign.status=active,-monthly-popular-score");
                        }

//this contains code for other options
            }

这是我的 FragmentActivity 代码,它调用方法 onCreate() 但值在我结束时返回 null。

  @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Bundle args = getArguments();
        SORT_VALUE = args.getString("SORT_VALUE");
        SORT_BY = args.getString("SORT_BY");

    }

【问题讨论】:

  • 您尝试将这些数据传入多少个活动,您提到了 SecondActivity、FirstActivity 和 FragmentActivity。最后两个应该是一样的。或者您是否尝试将此值传递给ProductListFragment,在这种情况下,您应该获取片段内的值而不是活动。一方面,如果 Activity 的 onCreate 已经创建,则不会调用它,其次,传递到片段中的包应该在片段而不是其活动中调用

标签: java android pass-data


【解决方案1】:

这是什么?

SORT_VALUE = args.getString("SORT_VALUE");
SORT_BY = args.getString("SORT_BY");

您想在常量中写入字符串吗?
尝试类似

String sortValue = args.getString("SORT_VALUE");

阅读更多关于捆绑使用的信息here
但通常捆绑需要在片段之间传递数据
活动用

Intent intent = new Intent(getBaseContext(), NewActivity.class);
intent.putExtra("YOUR_CONSTANT", yourData);
startActivity(intent);

在下一个活动中访问该意图:

String sessionId = getIntent().getStringExtra("YOUR_CONSTANT");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-26
    • 2018-04-17
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多