是否可以将int和string从一个活动传递到另一个活动,如果是,那么如何实现呢?

时间:2014-06-22 18:44:10

标签: java android android-activity

我正在尝试将一个字符串和一个int类型数据从一个活动发送到另一个活动,但由于缺乏知识,我不知道该怎么做。 通过下面给出的特定编码,我只能发送任何一种数据类型。

搜索了很多,但未找到任何适合我的问题的答案。如果我问任何错误的plzz通知我,因为我是Android Dev的新手。

任何帮助都可能会受到赞赏。

这是我对这两项活动的java编码:

First.java

public class QM extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_qm);


}


public void FLG(View view) {

    // Do something in response to button
    EditText mEditText= (EditText)findViewById(R.id.editText1);
     String str = mEditText.getText().toString();
    Intent intent = new Intent(this, Q1.class);
     intent.putExtra("myExtra", str);
    startActivity(intent);
    finish();

}
}

Second.java

public class Q1 extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_q1);

    Intent intent = getIntent();
    if (intent.hasExtra("myExtra")){                                
    TextView mText = (TextView)findViewById(R.id.textView1);
    mText.setText("user name "+intent.getStringExtra("myExtra")+"!"); }
}
}

3 个答案:

答案 0 :(得分:0)

只要你有不同的密钥,你可以发送2个额外的东西,甚至更多,所以在你的问题中,你需要2个额外的一个用于String,一个用于整数。

<强>样品:

<强>通过

Intent intent = new Intent(this, Q1.class);
 intent.putExtra("myExtra", str);
 intent.putExtra("myExtraInt", yourInt);

获取:

 Intent intent = getIntent();
if (intent.hasExtra("myExtra") && intent.hasExtra("myExtraInt")){                                
   TextView mText = (TextView)findViewById(R.id.textView1);
   mText.setText("user name "+intent.getStringExtra("myExtra")+"!");
   int extraInt = intent.getIntExtra(myExtraInt);
}

答案 1 :(得分:0)

我想给你一些信息。

想象一下Intent的附加功能是(理论上)无限大小的背包。只要每个数据都有一个唯一的名称(字符串),您就可以将某些类型的数据放入无限数字中。 在内部,它是一个将名称映射到值的表。

所以:是的,你可以将String和Int同时放入Intent的附加内容中。

String str = "Test";
int val = 2933;
Intent i = new Intent(MyActivity.this, NewActivity.class);
i.putExtra("MyStringExtraUniqueName", str);
i.putExtra("MyIntExtraUniqueName", val);

要检查它,请使用i.hasExtra(“MyStringExtraUniqueName”),并使用i.getExtra(“MyStringExtraUniqueName”)。

但如果您只使用getExtra,则会返回object类型的数据。请记住将返回的值强制转换为适当的类型,或者对某些预定义的数据类型使用一种专门的getter方法。

有关可用的getter,请参阅此内容:http://developer.android.com/reference/android/content/Intent.html

答案 2 :(得分:0)

    Bundle data = new Bundle();
    data.putInt("intKey", 5);
    data.putString("stringKey", "stackoverflow");
    Intent i = new Intent(MyActivity.this, NewActivity.class);
    i.putExtras(data);

    //And in the second acitvity fetch this way
    Bundle data = getIntent().putExtras(b);