0

我在 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());
}
4

1 回答 1

0

好的,我找到的解决方案是从活动中设置文本,我猜从片段中无法访问视图。无论我如何尝试获取它,该视图始终为空。这意味着为小部件提供不同的 id,但至少它有效。

于 2013-01-16T23:23:48.723 回答