2013-04-03 4 views
0

J'essaie de passer une valeur int avec une intention à une autre activité, mais je reçois toujours 0. Et ce n'est pas 0, j'ai vérifié. J'essaie de passer la valeur de la variable int brojPoena. J'ai essayé ceci:Comment passer une variable int à une autre activité?

Intent i = new Intent(Game.this, Popup_opis.class); 
i.putExtra("brojPoenaPrimljeno", brojPoena); 

et dans mon activité de réception:

Intent mIntent = getIntent(); 
     if(mIntent !=null) { 
      int brojPoena = mIntent.getIntExtra("brojPoenaPrimljeno", 0); 
     } 
tvBrojPoena.setText("You won " + brojPoenaPrimljeno + " points"); 

Aussi j'essayé ceci:

Intent i = new Intent(getApplicationContext(), Popup_opis.class); 
i.putExtra("brojPoenaPrimljeno", brojPoena); 

et dans mon activité recieving:

Bundle extrasPoeni = getIntent().getExtras(); 
     if(extrasPoeni !=null) { 
      brojPoenaPrimljeno = extras.getInt("brojPoena"); 
     } 

Mon activité de réception:

public class Popup_opis extends Activity implements OnClickListener{ 

    TextView tvOpis,tvNaslov,tvBrojPoena; 
    String poslatOpis, primljenOpis; 
    int brojPoenaPrimljeno; 
    Button OK; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.popup_opis); 

     Bundle extras = getIntent().getExtras(); 
     if(extras !=null) { 
      primljenOpis = extras.getString("poslatOpis"); 
     } 

     Bundle extrasPoeni = getIntent().getExtras(); 
     if(extrasPoeni !=null) { 
      brojPoenaPrimljeno = extras.getInt("brojPoena"); 
     } 

     initVariables(); 

    } 

    private void initVariables() { 


     Typeface tv = Typeface.createFromAsset(getAssets(), "ARIALN.TTF"); 
     OK = (Button) findViewById(R.id.bOK); 
     tvOpis = (TextView) findViewById(R.id.tvOpis); 
     tvBrojPoena = (TextView) findViewById(R.id.tvBrojPoena); 
     tvBrojPoena.setTypeface(tv); 
     tvNaslov = (TextView) findViewById(R.id.tvNaslov); 
     tvNaslov.setTypeface(tv); 
     tvOpis.setTypeface(tv); 
     tvOpis.setText(primljenOpis); 
     tvBrojPoena.setText("Osvojili ste " + brojPoenaPrimljeno + " poena u ovoj igri."); 



    OK.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      finish(); 

     } 
    }); 
    } 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    } 

} 
+0

Votre code est correct, mais comme le signale @codeMagic, vous ne transmettez probablement aucune valeur à l'activité de réception. – Darwind

+0

Je fais, j'ai juste essayé de mettre cette valeur au bouton comme setText juste au-dessus de cette ligne d'intention et cela fonctionne. – marjanbaz

Répondre

3

Où est cette variable brojPoenaPrimljeno? Vous avez cette

int brojPoena = mIntent.getIntExtra("brojPoenaPrimljeno", 0); 

mais utilisez un autre nom de variable lorsque vous appelez setText()

Vous essayez de recevoir la valeur à l'aide du value au lieu du key. Lorsque vous créez le Intent

i.putExtra("brojPoenaPrimljeno", brojPoena); // brojPoenaPrimljeno is the key be trying to use to 

Essayez

brojPoenaPrimljeno = getIntent().getIntExtra("brojPoenaPrimljeno", 0); 

En outre, c'est mineur et pas votre problème, mais est inefficace et pourrait causer des problèmes. Vous obtenez le `Intent dans deux endroits différents. Ici

Bundle extras = getIntent().getExtras(); 

et ici

Bundle extrasPoeni = getIntent().getExtras(); 

Manipulation intention de différents Activities

Dans le cas où cette aide, si j'ai une Activity recevoir Intents de plusieurs endroits, je vais utiliser un String extra à dire à la réception Activity d'où il vient. Par exemple:

Intention intention = new Intent (SendingActivity.this, ReceivingActivity.class); intention.putExtra ("source", "activityName"); // cela sera utilisé pour savoir d'où vient l'intention

//receiving activity 
Intent recIntent = getIntent(); 
if (recIntent.getStringExtra("source") != null) 
{ 
    String source = recIntent.getStringExtra("source"); 
    if (source.equals("activityName")) 
    { 
     // do stuff 
    } 
    if (source.equals("differentActivityName")) 
    { 
     // do other stuff 
    } 
} 
+0

Pas une réponse - le mettre comme un commentaire à la place ... – Darwind

+0

@Darwind Je l'ai presque fait parce que c'est sur la frontière mais c'est un peu trop pour un commentaire et c'est une réponse si l'OP utilise un mauvais nom de variable. Lequel, à partir du code donné, semble être le cas – codeMagic

+0

Cette variable brojPoenaPrimljeno est ma variable de réception. J'envoie brojPoena à brojPoenaPrimljeno dans une autre activité. – marjanbaz

Questions connexes