0

私はFragmentPagerAdapter2つのフラグメントを含むものを使用しています。Fragment を拡張する AbstractFragment から 2 つの Fragment が拡張されます。タイトルがフラグメントへの引数として渡されるため、作成時にフラグメントのページタイトルを取得できません:
FragmentActivity の内部クラス:

ArrayList<AbstractFragment> fragments = new ArrayList<AbstractFragment >();
public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {

            return fragments.get(position);

        }

        @Override
        public int getCount() {

            return fragments.size();


    }

            @Override
            public CharSequence getPageTitle(int position) {

                return fragments.get(position).getTitle();

            }

        }


抽象フラグメント:

protected Bundle data;
    protected String title;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        data=this.getArguments();
        numberSetData=data.getParcelableArrayList(KEY_CHART_DATA);
        title=data.getString(KEY_CHART_TITLE);
        //Title should is determined here.
    }
public abstract String getTitle();

コンクリート片:

@Override
    public String getTitle(){
        return title;
    }

ここに画像の説明を入力

次のフラグメントにスワイプすると問題は解決します。タイトルは表示されますが、作成されたときは表示されません。何かアドバイス?

4

1 に答える 1

1

まだ呼び出されていないgetTitle場所に呼び出しています。これに対する既知の回避策は、が呼び出されたかどうかを確認し、そうでない場合は を返すことです。onCreateFragmentonCreatedata.getString(KEY_CHART_TITLE)

public String getTitle()
{
    if( title == null )
    {
        title = getArguments().getString(KEY_CHART_TITLE);
    }
    return title;
}
于 2012-12-31T00:22:29.220 に答える