在另一个类中分离 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 逻辑的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ViewController 中分离(推送)到 NavigationController 中嵌入的另一个 ViewController?