0

FragmentPagerAdapter に 3 つのページがあり、(pageradapter ではなく) 別のフラグメントから longClick イベントをキャッチしようとし、このイベントを使用してテキストビューのテキストを変更します。MainActivity の arraylist にフラグメントを保存すると、ある程度は機能しましたが、arraylist を削除して既存のフラグメントを pageradapter から取得して、arraylist からフラグメントが消えるという問題を修正しようとしました。まったく変更されません (以前は一部変更されていました)。

関連する部分は次のとおりです (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

さて、私が見つけた解決策は、アクティビティからテキストを設定することでした。フラグメントからはビューにアクセスできないと思います。どのように取得しようとしても、ビューは常に null でした。これは、ウィジェットに異なる ID を与えることを意味しますが、少なくとも機能します。

于 2013-01-16T23:23:48.723 に答える