我有一个SlidingTabLayout,每次选择不同的页面(片段)时我都会尝试更改settext。
我试图通过片段本身来做到这一点。我总共有3个,我是通过致电getActivity()
onCreateView
来做到这一点的
应用程序不会崩溃,但这会导致选项卡在每个选项卡上显示错误的选项卡名称。它们没有问题,可以根据点击的订单显示两次名称。
我不确定我做错了什么。这是我目前的代码:
标签1-3:
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = (TextView)getActivity().findViewById(R.id.pageName);
textView.setText("Tab X");
return inflater.inflate(R.layout.discover_fragment,container,false);
}
如果需要,我可以显示更多代码。感谢所有帮助。
答案 0 :(得分:0)
为了在滑动选项卡时更改选项卡名称,您需要检查片段中当前选项卡的内容,您可以检查是否调用了片段的onResume方法,现在在onResume中您需要更新当前文本标签
初始化
时,您未提及 TextView这样做
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.discover_fragment,container,false);
TextView textView = (TextView)view.findViewById(R.id.pageName);
textView.setText("Tab X");
return view ;
}
答案 1 :(得分:0)
应用程序不会崩溃,但这会导致显示标签 每个标签上的标签名称不正确。
使用findViewById
调用getActivity()
表示访问活动布局中的视图,其中添加了当前片段。
如果TextView
位于Fragment布局中,则使用从getView()
返回的View
或onCreateView
对象来访问布局中的视图:
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,
Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.discover_fragment,container,false);
TextView txtView = (TextView)view.findViewById(R.id.pageName);
txtView.setText("Tab X");
return view;
}
或强>
如果想要从Activity访问视图,请确保在将Fragment添加到Activity之前通过传递布局ID来调用setContentView
:
TextView textView = (TextView)getActivity().findViewById(R.id.pageName);
答案 2 :(得分:0)
打开SlidingTabLayout.java,并在课程开头添加此行:
private ArrayList<TextView> mTextView = new ArrayList<>();
在tabTitleView.setText(adapter.getPageTitle(i));
:
mTextView.add(tabTitleView);
最后,添加此方法:
public void changeTitle(int position) {
final PagerAdapter adapter = mViewPager.getAdapter();
TextView tv = mTextView.get(position);
if (tv != null) {
tv.setText(adapter.getPageTitle(position));
}
}
现在,您可以致电changeTitle(0)
更改标签0的标题文字。