我正在学习Android。 从我的活动中,我创建了一个片段
FragmentTransaction transaction =
getSupportFragmentManager().beginTransaction();
MessageFragment fragment = new MessageFragment();
transaction.replace(R.id.sample_content_fragment, fragment);
transaction.commit();
片段有两个标签
public Object instantiateItem(ViewGroup container, int position) {
// Inflate a new layout from our resources
View view;
if (position ==0) {
view = getActivity().getLayoutInflater().inflate(R.layout.message_item,
container, false);
// Add the newly created View to the ViewPager
container.addView(view);
}
else {
view = getActivity().getLayoutInflater().inflate(R.layout.setting_item,
container, false);
// Add the newly created View to the ViewPager
container.addView(view);
}
// Return the View
return view;
}
对于这两种布局,都有一个具有相同id的textview(比如MessageTitle),在我的MainActivity中,我有一个LocalBroadcastManager来传递一些消息。当消息类型为警告时,我想更新message_item布局中的textview,并在设置消息类型时,然后在setting_item中更新textview。
所以我可以获取显示的视图,以便我可以相应地更新textview吗?或者为单个文本视图提供唯一ID更好?
非常感谢
答案 0 :(得分:0)
建议的方法是使用ViewPager
。但是你现有的代码本身有很多不那么正常的方法,所以我会继续尝试帮助你解决你的问题
您无需获取活动的根片段View
。你真正需要的是活跃的TextView
。
您可以使用类变量mMessageTextView
并使用instantiateItem()
在mMessageTextView = view.findViewById(<the id of the texti view>)
方法中对其进行初始化。此外,您可以使用布尔变量isSettginsPage
并根据现在的活动设置True/False
。
当您收到来自LocalBroadcastManager
的消息时,只需使用isSettingsPage
即可了解当前有效的网页,然后根据需要将mMessageTextView
更新为mMessageTextView.setText(<message>)
。< / p>