在另一个类中分离 FloatingActionButton 逻辑

Posted

技术标签:

【中文标题】在另一个类中分离 FloatingActionButton 逻辑【英文标题】:Separate FloatingActionButton Logic in another class 【发布时间】:2017-04-25 14:12:38 【问题描述】:

我想将我的浮动操作按钮逻辑(代码部分)拆分到另一个类中。 哪个是正确的方法? 我会遇到一些性能问题吗? 我正在使用黄油刀。 Butterknife 怎么做?

  public class MainActivity extends AppCompatActivity 

        private boolean fabClicked = false;
        @BindView(R.id.fab_one) FloatingActionButton fabOne;
        @BindView(R.id.fab_two) FloatingActionButton fabTwo;

        @Override
        protected void onCreate(Bundle savedInstanceState) 
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            ButterKnife.bind(this);
        

        @Optional
        @OnClick(R.id.fab_one, R.id.fab_two)
        public void doSomething(View view) 
            switch (view.getId()) 
                case R.id.fab_one:
                    //
                    break;
                case R.id.fab_two:
                    //
                    break;
                default:
                    break;
            
        

        public boolean getFabMenuClicked() 
            return fabMenuClicked;
        
    

【问题讨论】:

如果你的代码比较短,需要在同一个类的方法中添加代码。如果您的代码很长,则需要使用静态方法将其分隔到另一个类中。我建议阅读Building Maintainable Software, Java Edition 【参考方案1】:

这是特定于您的情况,在 android 中没有定义这样的最佳实践。我通常将监听器排除在主类之外,以避免千行代码进入一个类。

请找到这个示例,我将代码保存在单独的文件中,它可以帮助您将侦听器代码分成不同的类。

public class SeprateClickListener implements View.OnClickListener 
    private Context context;
    public SeprateClickListener(Context context) 
        this.context = context;
    
    @Override
    public void onClick(View v) 
        switch (v.getId()) 
            case R.id.btnOne:
                  break;
            case R.id.btnTwo:
                 break;
        
    

为视图分配监听器。

btnOne.setOnClickListener(new SeprateClickListener(this)); 
btnTwo.setOnClickListener(new SeprateClickListener(this));

【讨论】:

如您所见,我的代码中有黄油刀。如何用黄油刀解决这个问题? 这不是答案。我在我的代码中使用了黄油刀。 fabTwo.setOnClickListener(new SeprateClickListener(this));你可以添加这种代码。 ButterKnife 注入视图与您的核心逻辑无关。 我有一个带有 2 个参数的 onclick?告诉我如何让它发挥作用 阅读此 java 文档以获取传递值。 docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

以上是关于在另一个类中分离 FloatingActionButton 逻辑的主要内容,如果未能解决你的问题,请参考以下文章

如何从模板组件中分离模板(延迟加载模板)

在另一个类中分配对象数组(C++)

如何从 ViewController 中分离(推送)到 NavigationController 中嵌入的另一个 ViewController?

在另一个数据集上测试模型?

如何在另一个外部类变量中分配进度条的值来执行计算?

在基类和派生类中分离 ODE 和 ODE 求解器