2 votes

Affichage de "Happy birthday null" dans la deuxième activité de mon application

Activité principale `public class MainActivity extends AppCompatActivity {

private Object Context;
public static final String MSG="com.mp.exampleapp.ORDER";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}

public void createBirthdayCard(View view) {
    EditText text = (EditText)findViewById(R.id.nameInput);
    String str = text.getText().toString();

    Toast.makeText(this, "Button was clicked "+str,Toast.LENGTH_LONG).show();
    getIntent().putExtra(MSG,str);
    startActivity(new Intent(this,birthdaygreeting.class)) ;

    ImageView image=(ImageView) findViewById(R.id.cake);
    image.setImageResource(R.drawable.wish);
}

` Deuxième activité

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_birthdaygreeting);

     Intent intent = getIntent();
    String msg = "HAPPY BIRTHDAY "+intent.getStringExtra(MainActivity.MSG);
    // receive the value by getStringExtra() method
    // and key must be same which is send by first activity
    TextView textView= (TextView)findViewById(R.id.textView2);
   textView.setText(msg);

}

Après avoir lancé ce programme - après avoir cliqué sur le bouton - le message qui s'affiche est "HAPPY BIRTHDAY null". Je ne sais pas ce qui ne va pas.

1voto

Créez une intention puis ajoutez-y vos données comme le code ci-dessous.

public void createBirthdayCard(View view) {
    EditText text = (EditText)findViewById(R.id.nameInput);
    String str = text.getText().toString();

    Toast.makeText(this, "Button was clicked "+str,Toast.LENGTH_LONG).show();
    Intent intent = new Intent(this,birthdaygreeting.class);
    intent.putExtra(MSG,str);
    startActivity(intent) ;

    ImageView image=(ImageView) findViewById(R.id.cake);
    image.setImageResource(R.drawable.wish);
}

1voto

Sambhav Khandelwal Points 35

Qu'est-ce qui ne va pas ?


L'endroit où vous passez l'extra, c'est dans getIntent() Cela signifie que vous donnez un supplément d'intention à l'activité précédente. Dans ce cas, lorsque vous revenez en arrière et que vous obtenez ce supplément, vous l'obtenez, mais pas pour l'activité suivante. Vous obtenez alors un résultat nul, car cet extra n'existe pas pour cette activité. Il est donc nul.

Comment résoudre le problème ?


Au lieu d'utiliser cette

public void createBirthdayCard(View view) {
    EditText text = (EditText)findViewById(R.id.nameInput);
    String str = text.getText().toString();
    Toast.makeText(this, "Button was clicked "+str,Toast.LENGTH_LONG).show();
    getIntent().putExtra(MSG,str);
    startActivity(new Intent(this,birthdaygreeting.class)) ;

    ImageView image=(ImageView) findViewById(R.id.cake);
    image.setImageResource(R.drawable.wish);
}

utiliser ce

public void createBirthdayCard(View view) {
    EditText text = (EditText)findViewById(R.id.nameInput);
    String str = text.getText().toString();
    Toast.makeText(this, "Button was clicked "+str,Toast.LENGTH_LONG).show();
    startActivity(new Intent(this,birthdaygreeting.class).putExtra(MSG,str)) ;

    ImageView image=(ImageView) findViewById(R.id.cake);
    image.setImageResource(R.drawable.wish);
}

Comment savoir si cela va m'aider ?


Cela vous aidera, car ici, dans la nouvelle intention que vous donnez, là-bas, le supplément est donné. Donc, cette valeur est envoyée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X