String
を@Ectivityから@EFragmentに単純に渡そうとしているので、後で@EFragmentのtextViewにその値を割り当てることができます。バンドルパターンに節約を使用したい@Ectivityから@EFragmentにデータを渡して表示に割り当てる方法
私の試み:
@EActivity(R.layout.activity_pre_plan_detail)
public class PrePlanDetailActivity extends AppCompatActivity {
// some long adapter code
@AfterViews
void inits_(){
adapter.addFragment(myFragment_.builder().build().setme("something"));
}
}
______________________________________________________________________________
@EFragment(R.layout.fragment1)
public class PlanDescription extends Fragment {
@ViewById
TextView tv_fpd_description;
public void setme(String data){
tv_fpd_description.setText(data);
}
}
出力/エラー:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
注:
@EFragment(R.layout.fragment1)
public class PlanDescription extends Fragment {
@FragmentArg
String someDescription;
@ViewById
TextView tv_fpd_description;
@AfterViews
void afterViews() {
tv_fpd_description.setText(someDescription);
}
}
そして、あなたが作成することができます:すべての注釈を述べたが、定型ライブラリあなたは本当にこのためFragment
引数を使用する必要があります[android annotation][1]
それが注入される前に、明らか 'tv_fpd_description'がヌルである(私はonCreateView''に賭ける)... ... – Selvin
ので、私はその後 –
ナイーブソリューションを、それを初期化する必要があります。もしsetmeでviewがヌルであるかどうかチェックしてください。そうであれば、データを保存し、フラグメントの@AfterViewsにセットするか、 'adapter.addFragment'の後にsetmeを使います。 – Selvin