2

私はMyFragmentFragmentすなわちandroid.support.v4.app.FragmentサポートされFragmentPagerAdapter断片)

@Override 
public void setPrimaryItem(ViewGroup container, int position, Object object) { 
    super.setPrimaryItem(container, position, object); 
    MyFragment myFragment = (MyFragment) object; 
    myFragment.onPrimaryItemSet(); 
} 

で次のロジックを持っています。

問題は、私は最近、Android Support Library 23.2.1からAndroid Support Library 24.2.0に更新されるまでmyFragment.onPrimaryItemSet()が問題にされていないフラグメントのonCreate()方法、によって設定されたインスタンスのデータを必要とすることです。

私は戻って、フラグメントのonCreate()Objectパラメータとして渡される前にAndroid Support Library 24.0.0始まることFragmentPagerAdapter.setPrimaryItem()が一貫して呼ばれていることをことを発見しました。 Android Support Library 23.4.0以前では、フラグメントは一貫して最初に作成されます。

私はdocumentationrevision historyを読んで、しかしsetPrimaryItem()が呼ばれたときに明示的フラグメントの状態を記述する任意の契約を見つけることができません。したがって、これはサポートライブラリのバグである可能性があります。

誰もこの特定の問題の解決策または回避策がありますか?ありがとう!

答えて

0

私はAOSP問題追跡にthis issueを提出してきた、と私はよりよい解決策を見つけるまで、私は次の回避策を使用しています:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    extractArguments(); 
} 

private void extractArguments() { 
    Bundle args = getArguments(); 
    feature = args.getParcelable(ARG_FEATURE); 
} 

public void onPrimaryItemSet() { 
    if (feature == null) { 
     extractArguments(); 
    } 
    // business logic 
}