我在FragmentPagerAdapter中有三个页面,我尝试从不同的片段(不在pageradapter中)捕获longClick事件,并通过接口使用此事件来更改textview中的文本。当我将片段保存在MainActivity中的arraylist中时,它在某种程度上起了作用,但后来我尝试删除了arraylist并从pageradapter中抓取现有的片段以解决我的片段从我的arraylist中消失的问题,现在是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());
}
答案 0 :(得分:0)
好的,我找到的解决方案是从活动中设置文本,我猜这个视图无法从片段中获取。无论我怎么试图得到它,视图总是为空。这意味着为小部件提供不同的id,但至少它可以工作。