2013-04-03 151 views
0

我试图传递一个int值与意图到另一个活动,但我总是得到0.而且它不是0,我检查。我试图从int变量brojPoena中传递值。我尝试这样做:如何将int变量传递给另一个活动?

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

,并在我的接收活动:

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

我也试过这样:

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

,并在我的recieving活动:

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

我接收活动:

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

您的代码是正确的,但是@codeMagic指出,您可能没有将任何值传递给接收活动。 – Darwind 2013-04-03 23:03:43

+0

我这样做,我刚刚尝试设置该值作为setText按钮作为仅在该意图线之上,它的工作原理。 – marjanbaz 2013-04-03 23:27:05

回答

3

这个变量在哪里brojPoenaPrimljeno?你有这样的

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

,但使用的是不同的变量名,当你调用setText()

您正在尝试使用value,而不是key无法接收该值。当您创建Intent

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

尝试

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

而且,这还是次要的,而不是你的问题,但效率低,可能会造成问题。你在两个不同的地方获得了“意图”。这里

Bundle extras = getIntent().getExtras(); 

这里

Bundle extrasPoeni = getIntent().getExtras(); 

从不同Activities

处理意向万一这会有所帮助,如果我有一个Activity从多个地方接收Intents,我会用一个String extra来告诉收货人Activity来自哪里。例如:

Intent intent = new Intent(SendingActivity.this,ReceivingActivity.class); intent.putExtra(“source”,“activityName”); //这将用于知道意图的来源

//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

不是一个答案 - 把它作为一个评论,而不是... – Darwind 2013-04-03 22:57:05

+0

@Darwind我几乎这样做,因为这是在边界线上,但它有点评论,它是一个答案,如果OP使用错误的变量名称。其中,从给出的代码,看起来是这种情况 – codeMagic 2013-04-03 22:59:07

+0

变量brojPoenaPrimljeno是我的接收变量。我在另一项活动中将brojPoena发送给brojPoenaPrimljeno。 – marjanbaz 2013-04-03 22:59:50