J'essaie de comprendre les vues, les auditeurs, etc. J'ai une activité avec 2 boutons: le jeu de boutons et la butée. Mon problème est que je ne parviens pas à comprendre suffisamment les vues et les auditeurs pour générer une instruction de commutation fonctionnelle.
Par exemple, j'aimerais créer un écouteur SINGLE et l'utiliser d'une manière ou d'une autre pour déterminer le bouton sur lequel vous cliquez. Ensuite, utilisez d’une manière ou d’une autre l’ID du bouton sur lequel vous avez cliqué dans mon instruction Switch, mais tout ce que je trouve en ligne semble utiliser des écouteurs SEPARATE pour chaque bouton, puis utiliser en quelque sorte la vue comme argument de l’instruction Switch.
Je me rends compte que le code ci-dessous n'est pas correct, mais je recherche les changements nécessaires pour accomplir les tâches ci-dessus.
Je souhaite contrôler le MediaPlayer en fonction du bouton sur lequel l'utilisateur a cliqué. J'ai:
Button b1 = (Button) findViewById(R.id.buttonplay);
b1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v) {
// Perform action on click
switch(v.getId()) {
case R.id.buttonplay:
//Play voicefile
MediaPlayer.create(getBaseContext(), R.raw.voicefile).start();
break;
case R.id.buttonstop:
//Stop MediaPlayer
MediaPlayer.create(getBaseContext(), R.raw.voicefile).stop();
break;
}
}
});
En fin de compte, j'aimerais que le moyen le plus direct d'activer le bouton sur lequel vous cliquez. Je crois qu'une grande partie de ma confusion provient de la façon dont onClickListeners et Views sont utilisés dans ce contexte.
}
Un moyen d'y parvenir est de faire en sorte que votre classe implémente OnClickListener, puis l'ajoute à vos boutons comme suit:
Exemple:
//make your class implement OnClickListener
public class MyClass implements OnClickListener{
...
//Create your buttons and set their onClickListener to "this"
Button b1 = (Button) findViewById(R.id.buttonplay);
b1.setOnClickListener(this);
Button b2 = (Button) findViewById(R.id.buttonstop);
b2.setOnClickListener(this);
...
//implement the onClick method here
public void onClick(View v) {
// Perform action on click
switch(v.getId()) {
case R.id.buttonplay:
//Play voicefile
MediaPlayer.create(getBaseContext(), R.raw.voicefile).start();
break;
case R.id.buttonstop:
//Stop MediaPlayer
MediaPlayer.create(getBaseContext(), R.raw.voicefile).stop();
break;
}
}
}
Pour plus d'informations, voir Développeurs Android> Gestion des événements d'interface utilisateur .
Changez simplement la classe (je suppose que c'est l'activité principale) pour implémenter View.OnClickListener et sur la méthode onClick, mettez les actions générales onClick que vous voulez mettre:
public class MediaPlayer extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
Button b1 = (Button) findViewById(R.id.buttonplay);
b1.setOnClickListener(this);
//{YOUR APP}
}
@Override
public void onClick(View v) {
// Perform action on click
switch(v.getId()) {
case R.id.buttonplay:
//Play voicefile
MediaPlayer.create(getBaseContext(), R.raw.voicefile).start();
break;
case R.id.buttonstop:
//Stop MediaPlayer
MediaPlayer.create(getBaseContext(), R.raw.voicefile).stop();
break;
}
}}
Je l'ai tiré de cette vidéo: http://www.youtube.com/watch?v=rm-hNlTD1H0 . C'est bon pour les débutants.
Salut c'est assez simple pour faire basculer entre les boutons en utilisant le cas commutateur:
package com.example.browsebutton;
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.Button;
import Android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
Button b1,b2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button1);
b2=(Button)findViewById(R.id.button2);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int id=v.getId();
switch(id) {
case R.id.button1:
Toast.makeText(getBaseContext(), "btn1", Toast.LENGTH_LONG).show();
//Your Operation
break;
case R.id.button2:
Toast.makeText(getBaseContext(), "btn2", Toast.LENGTH_LONG).show();
//Your Operation
break;
}
}}
J'ai trouvé que le moyen le plus simple de le faire est de définir onClick pour chaque bouton du fichier XML.
<Button
Android:id="@+id/vrHelp"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/ic_menu_help"
Android:onClick="helpB" />
et alors vous pouvez faire un cas de commutation comme celui-ci
public void helpB(View v) {
Button clickedButton = (Button) v;
switch (clickedButton.getId()) {
case R.id.vrHelp:
dosomething...
break;
case R.id.coHelp:
dosomething...
break;
case R.id.ksHelp:
dosomething...
break;
case R.id.uHelp:
dosomething...
break;
case R.id.pHelp:
dosomething...
break;
}
}
Une erreur que j'ai faite était de ne pas inclure "implémente OnClickListener" dans la déclaration de classe principale. Ceci est un exemple de code pour illustrer clairement l’utilisation du boîtier de commutateur lors d’un clic. Le code change la couleur de fond selon le bouton enfoncé. J'espère que cela t'aides.
public class MainActivity extends Activity implements OnClickListener{
TextView displayText;
Button cred, cblack, cgreen, cyellow, cwhite;
LinearLayout buttonLayout;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cred = (Button) findViewById(R.id.bred);
cblack = (Button) findViewById(R.id.bblack);
cgreen = (Button) findViewById(R.id.bgreen);
cyellow = (Button) findViewById(R.id.byellow);
cwhite = (Button) findViewById(R.id.bwhite);
displayText = (TextView) findViewById(R.id.tvdisplay);
buttonLayout = (LinearLayout) findViewById(R.id.llbuttons);
cred.setOnClickListener(this);
cblack.setOnClickListener(this);
cgreen.setOnClickListener(this);
cyellow.setOnClickListener(this);
cwhite.setOnClickListener(this);
}
@Override
protected void onClick(View V){
int id=V.getId();
switch(id){
case R.id.bred:
displayText.setBackgroundColor(Color.rgb(255, 0, 0));
vanishLayout();
break;
case R.id.bblack:
displayText.setBackgroundColor(Color.rgb(0, 0, 0));
vanishLayout();
break;
case R.id.byellow:
displayText.setBackgroundColor(Color.rgb(255, 255, 0));
vanishLayout();
break;
case R.id.bgreen:
displayText.setBackgroundColor(Color.rgb(0, 255, 0));
vanishLayout();
break;
case R.id.bwhite:
displayText.setBackgroundColor(Color.rgb(255, 255, 255));
vanishLayout();
break;
}
}
J'utilise Butterknife avec interrupteur pour traiter ce genre de cas:
@OnClick({R.id.button_bireysel, R.id.button_kurumsal})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.button_bireysel:
//Do something
break;
case R.id.button_kurumsal:
//Do something
break;
}
}
Mais la chose est qu'il n'y a pas de cas par défaut et l'instruction switch tombe à travers