• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何将int变量传递给另一个活动?

java 来源:marjanbaz 4次浏览

我试图传递一个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 

    } 

} 


===========解决方案如下:

这个变量在哪里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)