Как установить данные в текстовое представление фрагмента после получения данных из следующего фрагмента - PullRequest
0 голосов
/ 25 января 2019
Значение

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

шаг 1: после нажатия на изображение фрагмента A перейти к фрагменту B шаг 2: после возвращения из фрагмента B я отправил некоторые данные шаг 3: во фрагменте данные получены по методу onActivityResponse, но метод textview.setText не устанавливает данные для textView

Фрагмент A

public void gotoFragmentB() {
    FragmentTransaction transaction =  getFragmentManager().beginTransaction();
    Fragment arEditorFragment = new AREditorFragment();
    arEditorFragment.setTargetFragment(PostNewJobThirdFragment.this, FRAGMENT_REQUEST_CODE);
    transaction.replace(R.id.container, arEditorFragment, getTag()); // give your fragment container id in first parameter
    transaction.addToBackStack(arEditorFragment.getClass().getName());  // if written, this transaction will be added to backstack
    transaction.commit();
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == FRAGMENT_REQUEST_CODE && resultCode == RESULT_OK) {
  String jobDesc = data.getStringExtra("job_description");
  Log.v(TAG, "job description : " + jobDesc);
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
  job_desc.setText(Html.fromHtml(jobDesc, Html.FROM_HTML_MODE_COMPACT));
  job_spec.setText(Html.fromHtml(jobDesc, Html.FROM_HTML_MODE_COMPACT));
        }
    }
}

Фрагмент Б

public void goBackToFragmentA()
{
    Intent intent = new Intent(view.getContext(), AREditorFragment.class);
    intent.putExtra("job_description", mEditText.getHtml().toString());
    getTargetFragment().onActivityResult(getTargetRequestCode(), RESULT_OK,   intent);
getFragmentManager().popBackStack();
}

1 Ответ

0 голосов
/ 25 января 2019

попробуйте это решение. У меня была похожая проблема, я решил ее так: начните первый фрагмент снова и удалите фрагмент B из стека

    public void goBackToFragmentA()
    {
        FragmentA fragment = new ResultFragment();
            Bundle bundle = new Bundle();
            bundle.putParcelable(ScanConstants.SCANNED_RESULT, uri);
            bundle.putString("selectedName",selectedName);
            bundle.putString("externalDirectory",externalDirectory);
            fragment.setArguments(bundle);
            android.app.FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.add(R.id.content, fragment);
            fragmentTransaction.addToBackStack(ResultFragment.class.toString());
            fragmentTransaction.commit();
getFragmentManager().beginTransaction().remove(FragmentB.this).commit();
    }
...