我在 FragmentPagerAdapter 中有三个页面,我尝试从不同的片段(不在 pageradapter 中)捕获 longClick 事件,并通过接口使用此事件来更改 textview 中的文本。当我将片段保存在 MainActivity 中的数组列表中时,它在某种程度上起作用,但随后我尝试删除数组列表并从 pageradapter 中获取现有片段以解决片段从我的数组列表中消失的问题,现在是 textview根本不会改变(它会改变之前的部分时间)。
以下是相关部分(根据 Tushar 的要求,我只带了最相关的部分,如果需要其他任何内容来理解代码,请提及,我会添加它):
@Override
public void onLocationSelected(String location) {
setCurrentLocation(location);
Fragment frag;
for (int i = adapter.getCount() - 1; i >= 0; i--) {
frag = adapter.getItem(i);
if (frag instanceof LocationChangedListener) {
((LocationChangedListener) frag).onLocationChanged();
}
}
}
private class WeatherAppPagerAdapter extends FragmentPagerAdapter {
private String[] titles;
public WeatherAppPagerAdapter(FragmentManager fm) {
super(fm);
titles = getResources().getStringArray(R.array.titles);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new OptionsFrag();
case 1:
return new ConditionsFrag();
case 2:
return new ForcastFrag();
default:
return null;
}
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
希望这对您有所帮助,因为我的 TextView 迫切需要一些文本。
编辑:这是 TextView 获取文本的位置:
@Override
public void onLocationChanged() {
if (view == null) {
return;
}
((TextView) view.findViewById(R.id.tvLocationName)).setText(mainActivity
.getCurrentLocation());
}