更新片段中的文字无效

时间:2016-06-07 14:27:51

标签: java android android-fragments

更改片段后(如下面的代码段所示)我想更新其中一个视图中显示的文本。

Fragment fragment = new LoadingScreen();
String loadScreenTag = "FLSTAG";
getFragmentManager()
    .beginTransaction()
    .setCustomAnimations(R.animator.card_flip_right_in, R.animator.card_flip_right_out,
                            R.animator.card_flip_left_in, R.animator.card_flip_left_out)
    .replace(R.id.main_activity_frame, fragment, loadScreenTag)
    .commit();

LoadingScreen lScreen = (LoadingScreen) getFragmentManager().findFragmentByTag(loadScreenTag);                       
lScreen.writeText("some text that does not work");

在LoadingScreen内部我已经定义了writeText

public void writeText(String msg) {
        if (mainView != null) {
            mainView.setText(msg);
        } else {
            Log.e(LOG_TAG, "mainView is null at this point");
        }
    }

正如您所看到的,我正在使用card_flip动画来更改片段(片段占据整个屏幕,因此在任何给定时间只有一个可见)。

  1. 如果前一个片段是另一个LoadingScreen,则代码不起作用(没有崩溃/错误,只是没有更新textView)。

    • 我假设它正在更新刚刚替换的LoadingScreen的textView。为什么会这样?
  2. 如果前一个片段是任何其他片段,它可以正常工作,但速度慢得令人不安。为什么这么慢?

1 个答案:

答案 0 :(得分:0)

您可以将字符串传递给片段,然后在片段内呈现​​它。所以你会:

Bundle bundle = new Bundle();
bundle.putString("STRING_KEY", "Some string that does not work");
Fragment fragment = new LoadingScreen();
fragment.setArguments(bundle); 

... 然后在onCreateView中的LoadingScreen片段内部:

String myString = getArguments().getString("STRING_KEY");

您可以通过正在膨胀的ViewGroup轻松访问要在oncreateview内更新的textview。然后

yourTextView.setText(myString);