从下一个片段获取数据后如何将数据设置为片段的textview
How to set data to textview of fragment after getting data from next fragment
从下一个片段接收数据后,textview 无法显示值。
第 1 步:点击 fragmentA 的图像后转到 fragmentB
第 2 步:从 fragmentB 返回后,我发送了一些数据
第 3 步:在 fragmentA 中,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));
}
}
}
片段 B
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();
}
试试这个解决方案。我遇到了类似的问题,我是这样解决的:
再次开始第一个片段并从堆栈中删除该片段
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();
}
从下一个片段接收数据后,textview 无法显示值。
第 1 步:点击 fragmentA 的图像后转到 fragmentB 第 2 步:从 fragmentB 返回后,我发送了一些数据 第 3 步:在 fragmentA 中,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));
}
}
}
片段 B
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();
}
试试这个解决方案。我遇到了类似的问题,我是这样解决的: 再次开始第一个片段并从堆栈中删除该片段
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();
}