更改片段后(如下面的代码段所示)我想更新其中一个视图中显示的文本。
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动画来更改片段(片段占据整个屏幕,因此在任何给定时间只有一个可见)。
如果前一个片段是另一个LoadingScreen,则代码不起作用(没有崩溃/错误,只是没有更新textView)。
如果前一个片段是任何其他片段,它可以正常工作,但速度慢得令人不安。为什么这么慢?
答案 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);