2017-06-15 16 views
-1

setOnCheckedChangeListenerメソッドを最初のトグルボタンに設定しました。同じ方法ですべてのトグルボタンを設定したいと思います。誰かが私を助けることができる:複数のトグルボタンで同じメソッドを設定する方法

public class MainActivity extends AppCompatActivity { 

private ToggleButton toggleButton; 
private ToggleButton toggleButton2; 
private ToggleButton toggleButton3; 
private ToggleButton toggleButton4; 
private ToggleButton toggleButton5; 
private ToggleButton toggleButton6; 
private ToggleButton toggleButton7; 
private TextView textView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    toggleButton = (ToggleButton) findViewById(R.id.toggleButton); 
    textView = (TextView) findViewById(R.id.textView); 
    toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (isChecked) { 
       textView.setText("1"); 
      } else 
       textView.setText("0"); 
     } 
    }); 
} 

}

+0

最初に1回選択するとすべてのトグルをチェックする必要がありますか? –

答えて

1

つ以上の方法にそれをASSGN行うべきことは

インタフェースを使用して、0

利点は

public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     toggleButton.setOnCheckedChangeListener(this); 
    } 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

     switch (buttonView.getId()){ 
      case R.id.b1 : someMethod1(); break; 
      case R.id.b2 : someMethod2(); break; 
     } 

    } 
} 
0

は、単一のリスナーを作成して、トグルボタン

private CompoundButton.OnCheckedChangeListener onCheckedChange = new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if(textView != null) { 
      if (isChecked) { 
       textView.setText("1"); 
      } else { 
       textView.setText("0"); 
      } 
     } 
    } 
}); 

とのonCreate()内

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    toggleButton = (ToggleButton) findViewById(R.id.toggleButton); 
    textView = (TextView) findViewById(R.id.textView); 

    toggleButton.setOnCheckedChangeListener(onCheckedChange); 
    toggleButton2.setOnCheckedChangeListener(onCheckedChange); 
    ............... 
    .............. 
0

まず、あなたは、単一のトグルボタンの動作を変更したい場合、あなたはそれがIDです確認することができますし、次のようにオーバーライドメソッドで異なるタスクを使用後に次のとおりです。ビューのコレクションを使用しますその後 :アプリケーションでButterKnifeを使用する場合は、このようなあなたのクリックリスナーを扱うことができ、両方の

public class MainActivity extends AppCompatActivity { 

private ToggleButton[] toggleButtons; 

private TextView textView; 

private CompoundButton.OnCheckedChangeListene toggleButtonChcekcedEvent() 
{ 
    new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (isChecked) { 
       textView.setText("1"); 
      } else 
       textView.setText("0"); 
     } 
    }; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    toggleButtons = new ToggleButton[] 
    { 
     (ToggleButton) findViewById(R.id.toggleButton), 
     (ToggleButton) findViewById(R.id.toggleButton2), 
     // please continue to initialize the rest here 
    } 

    textView = (TextView) findViewById(R.id.textView); 

    for (ToggleButton button : toggleButtons) 
    { 
     button.setOnCheckedChangeListener(toggleButtonChcekcedEvent()); 
    } 


} 
} 
0

それらを使用してください:同じイベント機能 で機能を構築し、。

ButterKnifeヘルプあなたはbindViewとclickManagerを管理すると...

compile 'com.jakewharton:butterknife:8.4.0' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' 


    @OnClick({R.id.toggleButton1, 
     R.id.toggleButton2, 
     R.id.toggleButton3}) 
    public void clickListener(View view) { 
     switch (view.getId()) { 
     case R.id.toggleButton1: 
     case R.id.toggleButton2: 
     case R.id.toggleButton3: 
      //do something here 
      break; 
    } 
0

別のアプローチは、このようなXMLでハンドラを定義することです:

<ToggleButton 
    ... 
    ... 
    android:onClick="onToggleClicked"/> 

その後、あなたにアクティビティ:

public void onToggleClicked(View view) { 
    // Is the toggle on? 
    boolean on = ((ToggleButton) view).isChecked(); 

    if (on) { 
     // Turn on things 
    } else { 
     // Turn off things 
    } 
} 

これは非常に乾燥しており、維持しやすくなっています。

関連する問題