【问题标题】:How to pass int variable to another activity?如何将 int 变量传递给另一个活动?
【发布时间】:2013-04-03 22:51:10
【问题描述】:

我正在尝试将带有意图的 int 值传递给另一个活动,但我总是得到 0。而且它不是 0,我检查了。我正在尝试从 int 变量 brojPoena 传递值。我试过这个:

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);

在我的接收活动中:

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

    }

}

【问题讨论】:

  • 您的代码是正确的,但是正如@codeMagic 指出的那样,您可能没有将任何值传递给接收活动。
  • 我愿意,我刚刚尝试将该值设置为按钮作为 setText 就在该 Intent 行上方并且它可以工作。

标签: java android


【解决方案1】:

这个变量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 意图 = 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
    }
}

【讨论】:

  • @Darwind 我几乎做到了,因为这是在边界上,但对于评论来说有点多,如果 OP 使用了错误的变量名,这是一个答案。从给出的代码来看,情况似乎是这样
  • 那个变量 brojPoenaPrimljeno 是我的接收变量。我在另一个活动中将 brojPoena 发送给 brojPoenaPrimljeno。
  • 你是对的......但是?在答案中不赞成;-)但是我认为向正确的方向轻推OP我想它和答案一样好;)
  • @marjanbaz 在第一个 sn-p 中不是,但在第二个 sn-p 中是。哪个是setText() 中的变量?您是否在检查变量以查看值的行之后放置了断点?
  • @Darwind 我看到了,谢谢!我们仍然可以成为朋友:P
猜你喜欢
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多