1

浮動アクションロジック(コード部分)を別のクラスに分割します。
これを行う適切な方法はどれですか?
パフォーマンス上の問題が発生するのですか?
私はバターナイフを使用しています。どのようにバターナイフでそれを行うには?別のFloatingActionButtonロジック別のクラスのロジック

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; 
     } 
    } 
+0

コードが短い場合は、同じクラス内のメソッドにコードを追加する必要があります。コードが長い場合は、静的メソッドを使用して別のクラスに分割する必要があります。私はあなたが私のコードでバターナイフを持っていることがわかるように[Building Maintainable Software、Java Edition](https://www.amazon.com/Building-Maintainable-Software-Java-Future-Proof/dp/1491953527) –

答えて

0

あなたのケースに固有のことですが、Androidではそのようなベストプラクティスは定義されていません。私は通常、クラスに1000行のコードを避けるために、メインクラスからリスナーを守っています。

コードを別々のファイルに保存しているこの例は、リスナーコードを別のクラスに分けるのに役立ちます。

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)); 
+0

を読むことをお勧めします。バターナイフでこれを解決する方法は? –

+0

これは答えではありません。私は自分のコードでバターナイフを使用しています。 –

+0

fabTwo.setOnClickListener(新しいSeprateClickListener(this));この種のコードを追加することができます。 ButterKnifeはビューを注入します。それはあなたのコアロジックとは関係ありません。 – QuokMoon