无法在寻呼机适配器+ FragmentPagerAdapter中更改事件上的TextView文本

时间:2013-01-16 19:07:45

标签: android interface onlongclicklistener fragmentpageradapter

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

1 个答案:

答案 0 :(得分:0)

好的,我找到的解决方案是从活动中设置文本,我猜这个视图无法从片段中获取。无论我怎么试图得到它,视图总是为空。这意味着为小部件提供不同的id,但至少它可以工作。