1

Я хочу разделить мою логику floactionbutton (часть кода) в другом классе.
Каков правильный способ сделать это?
Удастся ли мне решить некоторые проблемы с производительностью?
Я использую Butterknife. Как это сделать с Butterknife?Отдельная логика 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 Maintenance Software, Java Edition] (https://www.amazon.com/Building-Maintainable-Software-Java-Future-Proof/dp/1491953527) –

ответ

0

Это специфично для вашего случая. В 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)); 
+0

, как вы можете видеть, у меня есть масляный нож в моем коде , как решить это с помощью масляного ножа? –

+0

это не ответ. Я использую butterknife в своем коде. –

+0

fabTwo.setOnClickListener (новый SeprateClickListener (это)); вы можете добавить этот код. ButterKnife инъекция зрения это ничего не связано с вашей основной логикой. – QuokMoon