Можно ли установить Arguments () на onActivityResult () и передать его фрагменту? - PullRequest
0 голосов
/ 09 марта 2020

Можно ли установить Arguments () на onActivityResult () и передать его FragmentActivity?

Из моей SecondActivity я передаю пакет в FirstActivity через onBackPressed ().

  @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");

    }

1 Ответ

0 голосов
/ 09 марта 2020

что это?

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

вы пытаетесь написать строку в своих константах?
попробуйте что-то вроде

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

подробнее об использовании пакета здесь
, но обычно требуется объединение данных для передачи данных между фрагментом
для действий, использующих

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

Доступ к этому намерению при выполнении следующего действия:

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