0
FragmentPickFloor.javaフラグメントからカスタムビューに値を直接渡すことはできますか?
......
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.btnScan:
if(spinFloor.performClick() && spinPartFloor.performClick()) {
extras = new Bundle();
spinFloorValue = spinFloor.getSelectedItem().toString();
spinPartFloorValue = spinPartFloor.getSelectedItem().toString();
extras.putString(Constants.FLOOR_KEY, spinFloorValue);
extras.putString(Constants.FLOOR_PART_KEY, spinPartFloorValue);
intent = new Intent(getContext(), MainActivity.class);
intent.putExtras(extras);
startActivity(intent);
FragmentCreator.fragmentTransactionSetup(new FragmentFloor(), getFragmentManager(), FragmentFloor.class.getSimpleName());
}
break;
}
}
FragmentCreator.java
public static void fragmentTransactionSetup(Fragment fragment,
FragmentManager fragmentManager,
String tag) {
fragmentManager.executePendingTransactions();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment, tag);
fragmentTransaction.addToBackStack(tag);
fragmentTransaction.commit();
}
FragmentFloor.java
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_floor, container, false);
}
TouchView.java
public TouchView(Context context, AttributeSet attrs) {
super(context, attrs);
extras = ((MainActivity) getContext()).getIntent().getExtras();
spinFloorValue = extras.getString(Constants.FLOOR_KEY);
spinPartFloorValue = extras.getString(Constants.FLOOR_PART_KEY);
}
TouchView D FragmentPickFloorのスピナーから選択した依存関係の異なる背景を表示します。
を使用してフラグメントから直接、活動のバンドルデータにアクセスしてみてください可能性があり、私はあなたのアドバイスを使用しますが、私の値私のカスタムビューが表示された後に更新します。 – jozwiak
その場合、Activity => Fragment => Custom Viewから値を伝播する方法が必要になります。いくつかのオプションがあります:** FragmentInteractionListener **を使用することができます。** Fragment Wizard *、** Otto **や** RxJava **のようなイベントバスによって生成されたものと同じです。統合された各オプションに関連する時間を考慮して、それぞれを調査し、どちらが最適かを判断します。 – ayvazj
ありがとうございます。今私はLayoutInflater.Factoryで試しています – jozwiak