如何在底部表单中选择项目时自动更新活动内容

问题描述 投票:0回答:1

当我更改单位时,我正在尝试制作一个单位转换器,但结果并未如图所示进行门控更新

当我从菜单中选择单位时,转换必须在 textview 上可见

这里是代码:-

 
public class UnitMenu extends BottomSheetDialogFragment {
    ListView unitList;
    String set;
    String[] units;
    ExtendedFloatingActionButton button;
    UnitMenu(String[] units, String set, ExtendedFloatingActionButton button) {
        this.units = units;
        this.set = set;
        this.button = button;
    }

    @NonNull
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.area_select_unit, container, true);
        unitList = view.findViewById(R.id.unitList);

        ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, units);
        unitList.setAdapter(adapter);
        unitList.setOnItemClickListener((parent, v, position, id) -> {
            if (set.equals("Select Unit From"))
                ConverterActivity.setSelectedFromUnit(units[position]);
            else ConverterActivity.setSelectedToUnit(units[position]);

            button.setText(units[position]);
            dismiss();
        });

        return view;
    }
}

java android android-activity android-fragmentactivity bottom-sheet
1个回答
0
投票

请在调用显示对话框时添加您的代码以获得更好的答案。 通常我会这样使用回调:

class UnitDialog : BottomSheetDialogFragment(){
  private lateinit var onChangeUnit: (String) -> Unit
  companion object {
    fun newInstance(onChangeUnit: (String) -> Unit){
      val dialog = UnitDialog()
      dialog.onChangeUnit = onChangeUnit
      return dialog
    }    
  }
  
  fun onItemClick(unit: String){
    onChangeUnit.invock(unit)
  }  
} 

class MainActivity: AppCompatActivity(){
  fun changeUnit(){
  UnitDialog.newInstance(){ newUnit->
    // call logic convert number in here
  }.show(supportFragmentManager,"TAG_UNIT_DIALOG")
}

© www.soinside.com 2019 - 2024. All rights reserved.