1

我想在另一個類中拆分我的floatingactionbutton邏輯(代碼部分)。
哪種方法可以做到這一點?
我會遇到一些性能問題分離嗎?
我正在使用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

如果您的代碼很短,您需要將代碼添加到同一類中的方法中。如果你的代碼很長,你需要使用靜態方法將它分離到另一個類。我建議閱讀[構建可維護軟件,Java版](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

,你可以看到我在我的代碼中有butterknife 。如何用butterknife解決這個問題? –

+0

這不是答案。我在我的代碼中使用了butterknife。 –

+0

fabTwo.setOnClickListener(new SeprateClickListener(this));你可以添加這種類型的代碼。 ButterKnife注入觀點它與你的核心邏輯沒有任何關係。 – QuokMoon