基本的に私は自分のフラグメントを持っています
public class FragmentDashboard extends Fragment {
public static FragmentDashboard newInstance() {
FragmentDashboard frag = new FragmentDashboard();
return frag;
}
public void updateData(Object object){
myTextView.setText(object.getField);
//update views with object values
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dashboard, container, false);
myTextView = (TextView) view.findViewById(R.id.myTextView );
}
}
次に、私のアクティビティで、私が行うデータを更新する必要があります:
FragmentDashboard fragmentDashboard = (FragmentDashboard) getSupportFragmentManager().findFragmentById(R.id.layFragment);
fragmentDashboard.updateData(myObject)
これは、フラグメントが表示された後にアクティビティを呼び出す場合にうまく機能します (完了時に asynctask からのように)。
私が直面している問題は、アクティビティの onCreate() にフラグメントを追加した直後に updateData を実行しなければならないことです。
final FragmentTransaction ft = fragmentManager.beginTransaction();
FragmentDashboard fragmentDashboard = FragmentDashboard.newInstance();
ft.replace(R.id.layFragment, fragmentDashboard);
ft.commit();
fragmentDashboard.updateData(myObject)
onCreateView
これを実行すると、フラグメントがまだ実行されておらmyTextView
ず、初期化されていないため、NPE が発生します。
オブジェクトをパーセル可能にすることを避けたいので、newInstance にパラメーターを追加したくありません。何か案は ?