0

i have 2 boutons sur l'activité 1 (crime et de la santé) ayant des onClickListeners et les deux fonctions conduit à une même activité 2 ...passant différentes Vales des différents boutons

sur l'activité 2 je veux faire la différence ce que l'utilisateur touche J'ai cliqué sur (si crime ou santé) afin que l'application puisse générer le msg respectif ..

J'utilise putExtra et bundle et aussi capable de récupérer des données de l'activité 1 à l'activité 2, mais sur l'activité 2 je suis incapable de comprendre ce que sorte de if/else ou de l'instruction de commutateur devrais-je utiliser afin que je puisse différencier quel bouton est pressé par l'utilisateur

ACTIVITÉ 1 - Minor

public class Minor extends Fragment implements View.OnClickListener{ 

    public String option; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.minor_view, container, false); 
     Button ec = view.findViewById(R.id.ec); 
     ec.setOnClickListener(this); 

     Button hc = view.findViewById(R.id.hc); 
     hc.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Object view=null; 
       buttonClicked((View) view); 
      } 
     }); 

     return view; 

     } 


    @Override 
    public void onClick(View view) { 

     final Intent intent = new Intent(getActivity(),HelpCall.class); 
     Bundle b = new Bundle(); 
     b.putString(option,"ec"); 
     intent.putExtras(b); 
     startActivity(intent); 


    } 

    public void buttonClicked (View v) 
    { 
     final Intent intent = new Intent(getActivity(),HelpCall.class); 
     Bundle b = new Bundle(); 
     b.putString(option,"hc"); 
     intent.putExtras(b); 
     startActivity(intent); 

    } 
} 

Activité 2 - HelpCall

public class HelpCall extends AppCompatActivity { 

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

     Bundle b = getIntent().getExtras(); 
     String ec = b.getString("ec"); 
     String hc = b.getString("hc"); 


     Button sms = (Button) findViewById(R.id.sms); 

     sms.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // sendSms("number", "Emergency.. "); 
       Toast.makeText(getApplicationContext(), "emergency call crime/health", Toast.LENGTH_LONG).show(); 
      } 

     }); 
    } 

    private void sendSms(String phoneNumber, String message){ 
     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, null, null); 
    } 

} 

Répondre

1

disons hc signifie la santé et la criminalité signifie ec, alors je ferais quelque chose comme ça. D'abord vous devez utiliser une clé pour transmettre des données à la deuxième activité, disons que la clé est "option", puis dans les deux boutons, écrivez ceci, mais dans la troisième ligne changez la deuxième valeur basée sur le bouton cliqué (" ec "Or" hc ")

final Intent intent = new Intent(getActivity(),HelpCall.class); 
Bundle b = new Bundle(); 
b.putString("option","ec"); 
intent.putExtras(b); 
startActivity(intent); 

maintenant sur la deuxième activité vous obtiendrez cette valeur.

Bundle b = getIntent().getExtras(); 
String option = b.getString("option"); 

maintenant dans le clic sur écoute

sms.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
//sendSms("number", "Emergency.. "); 
if(option.contentEquals("ec")){ 
    //crime clicked do thing here 
} 
else{ 
    //health clicked do thing here 
} 
} 
}); 
+0

thanku @DaiwikDan votre réponse a été utile .... tout ce que je ne recevais pas était de savoir comment envoyer quelque chose concernant le bouton à l'écran suivant ............. merci –

0

Modifier ces choses dans votre code

public String option; 

Pour

public String option = "value"; 

Et

Bundle b = getIntent().getExtras(); 
    String emergency_type = b.getString("value"); 
    String call_type; 
    if(call_type.equalsIgnoreCase("ec"){ 
       call_type= "ec" ; 
    } 
     else{ 
     call_type = "hc"; 
     } 

    Button sms = (Button) findViewById(R.id.sms); 

    sms.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // sendSms("number", "Emergency.. "); 
      Toast.makeText(getApplicationContext(), "emergency call " + call_type, Toast.LENGTH_LONG).show(); 
     } 

    }); 
+0

merci pour ur réponse rapide @MayankBhatnagar mais ne sais pas pourquoi cela m'a donné peu d'erreurs sur call_type ........ et j'étais tellement mes affaires que je n'ai pas vérifié quelles erreurs étaient là ...... mais maintenant je lis le code d'ur et son call_type n'a aucune valeur venant de l'écran précédent ... plutôt son l'emergency_type obtenant la valeur et le type d'appel est ici d'une manière ou d'une autre irrelevent . mais merci beaucoup pour répondre –

0

je suis incapable de comprendre ce genre de if/else ou instruction switch dois-je utiliser pour que je puisse distinguer quel bouton est pressé par l'utilisateur

Vous pouvez réellement passer à bouton id activité suivante

Exemple 1 en activité

intent.putExtra("slot", v.getId()); 

Dans l'activité 2

int buttonId = getIntent().getIntExtra("slot", 0); 
    switch() { 
     case R.id.firstbutton: 
      //Do what you want 
      break; 
     case R.id.secondbutton: 
      //Do What you whant 
    } 
2

Ok, vous voulez essentiellement mettre et récupérer des données à partir d'un paquet.

L'idée est simple:

hc.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       final Intent intent = new Intent(getActivity(),HelpCall.class); 
       Bundle b = new Bundle(); 
       b.putString("option", "hc"); 
       intent.putExtras(b); 
       startActivity(intent); 
      } 
     }); 

ec.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       final Intent intent = new Intent(getActivity(),HelpCall.class); 
       Bundle b = new Bundle(); 
       b.putString("option", "ec"); 
       intent.putExtras(b); 
       startActivity(intent); 
      } 
     }); 

Et dans votre deuxième activité HelpCall vous avez juste besoin d'obtenir la valeur passée:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_help_call); 
    String data = getIntent().getExtras().get("option"); 
} 

Cette chaîne data contiendra soit ec ou hc en fonction du bouton cliqué dans l'activité précédente.


Il y a aussi quelques améliorations que vous pourriez faire en termes de couplage de code, j'ai écrit quelques articles débutants qui pourraient vous aider avec cela.

+0

merci @JaoquimLey votre réponse a bien fonctionné pour moi .... tout ce que je ne pouvais pas résoudre comment envoyer des informations de bouton pour envoyer des informations de bouton à l'autre écran ...... merci beaucoup –

+0

Si vous pensez que ma réponse a vraiment fonctionné pourquoi ne pas en faire la réponse acceptée? =) –

+0

Eh bien c'est parce que la réponse que j'ai acceptée m'a également répondu avec mon problème if/else auquel j'ai demandé en question ...... les deux réponses ur ont été correctes à la fois travaillé pour moi mais il m'a donné une sorte de complète répondre à ma question –