【问题标题】:Android: How to make seprate class for BottomSheetDialogAndroid:如何为 BottomSheetDialog 创建单独的类
【发布时间】:2017-06-13 01:48:55
【问题描述】:

我有在单击按钮时显示的底部工作表对话框,因此我已将底部工作表对话框的所有逻辑实现到按钮的 onClick 方法中,如何创建单独的类来显示底部工作表对话框并仅在 onClick 中调用方法

这是我在 onClick 中的代码:

 BottomSheetDialog mBottomSheetDialog = new BottomSheetDialog(this);
 View sheetView = getLayoutInflater().inflate(R.layout.bottom_sheet, null);

 NumberPicker minutePicker = (NumberPicker) sheetView.findViewById(R.id.np);
 tv = (TextView) sheetView.findViewById(R.id.tv);

 minutePicker.setMaxValue(100);
 minutePicker.setMinValue(0);
 minutePicker.setWrapSelectorWheel(false);

 mBottomSheetDialog.setContentView(sheetView);
 mBottomSheetDialog.show();

 minutePicker.setOnValueChangedListener(
            new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, 
                                             int newVal) {
            tv.setText(Integer.toString(newVal));
        }
    });
}

【问题讨论】:

    标签: java android class encapsulation numberpicker


    【解决方案1】:

    实现关注点分离并使代码模块化

    public class ClsBottomSheet{
    
    public static TextView tv;
    LayoutInflater inflater;
    BottomSheetDialog mBottomSheetDialog;
    public static NumberPicker minutePicker;
    
    public ClsBottomSheet(Context context) {
        mBottomSheetDialog = new BottomSheetDialog(context);
        inflater = LayoutInflater.from(context);
    }
    
    public BottomSheetDialog showDialog(){
        View sheetView = inflater.inflate(R.layout.bottom_sheet, null);
        minutePicker = (NumberPicker) sheetView.findViewById(R.id.np);
        tv = (TextView) sheetView.findViewById(R.id.tv);
        Button btnOne = (Button) sheetView.findViewById(R.id.btn_one);
        Button btnTwo = (Button) sheetView.findViewById(R.id.btn_two);
    
        btnOne.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mBottomSheetDialog.cancel();
            }
        });
    
        btnTwo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 mBottomSheetDialog.dismiss();
            }
        });
    
        minutePicker.setMaxValue(100);
        minutePicker.setMinValue(0);
        minutePicker.setWrapSelectorWheel(false);
    
        mBottomSheetDialog.setContentView(sheetView);
        minutePicker.setOnValueChangedListener(new ClsCallback());
    
        return mBottomSheetDialog;
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 2019-11-16
      • 1970-01-01
      相关资源
      最近更新 更多