本问题已经有最佳答案,请猛点这里访问。
我想知道如何传递和读取来自另一个活动的一个活动中的字符串。 我有两个活动。 我将它们称为Activity1和Activity2。 我在Activity1中有一个名为course的字符串。 我想在Activity2中读取该字符串。
我试过这样做,但字符串出来了。
public class Activity2 extends Activity1 {
我见过人们使用Intent函数,但我无法弄清楚如何使用它。
有什么建议? 谢谢!
你能粘贴完整的代码吗? 如果课程是Activity1的一部分,请尝试Activity2扩展Activity1。
我纠正了。 我打算在输入问题时写一下。 它没有给出任何错误,只是空洞。
使用Intent是正确的方法。
使用意图传递值。
在你的第一个活动中
Intent i= new Intent("com.example.secondActivity");
i.putExtra("key",mystring);
// for explicit intents
// Intent i= new Intent(ActivityName.this,SecondActivity.class);
// parameter 1 is the key
// parameter 2 is the value
// your value
startActivity(i);
在您的第二个活动中检索它。
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("key");
//get the value based on the key
}
要传递自定义对象,您可以查看此链接
谢谢!。 有效。
如果有帮助,@ ezcats会接受答案。
我只能在10分钟后接受它。 我已经做了。
@ezcats谢谢:)
你的第一个活动,Activity1
public class Activity1 extends Activity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
btn=(Button) findViewById(R.id.payBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent=new Intent(Activity1.this,Activity2.class);
intent.putExtra("course","courseValue");
startActivity(intent);
}
});
}
}
Activity2
public class Activity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
String course=getIntent().getExtras().getString("course").toString();
Log.d("course",course);
}
}
希望这会帮助你。
在您的MainActivity中
Intent i= new Intent(MainActivity.this,SecondActivity.class);
i.putExtra("key",yourstring);
startActiivty(i);
在你的第二个活动onCreate()
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("key");
}
从活动1调用这样的事情:
Intent intent= new Intent("path.secondActivity");
intent.putExtra("keyString",sampleString);
startActiivty(intent);
并在活动2尝试这样的事情:
Bundle values = getIntent().getExtras();
if (values != null) {
String keyString = values.getString("keyString");
}
你走在正确的轨道上 - 你正在使用意图启动第二项活动。您所要做的就是添加intent.putExtra("title", stringObject);,其中stringObject是您要传递的字符串,title是您要为该对象提供的名称。您使用该名称来引用第二个活动中传递的对象,如下所示:
String s = (String)getIntent().getExtras().getSerializable("title");
当我这样做时,我似乎得到了这个错误。 :不能从Intent类型对非静态方法putExtra(String,String)进行静态引用
你是否从静态方法中调用putExtra? 如果是这样,你确定你需要这样做吗?
试试这个
公共类Activity2扩展了Activity1
我纠正了我的代码。 这就是我做的。