【问题标题】:Separate FloatingActionButton Logic in another class在另一个类中分离 FloatingActionButton 逻辑
【发布时间】: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

标签: java android button android-activity floating-action-button


【解决方案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
猜你喜欢
  • 1970-01-01
  • 2021-07-10
  • 2021-09-15
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多