使用意图在活动之间传递字符串值

时间:2015-12-17 01:17:01

标签: java android android-intent

我理解如何使用意图将字符串值从MainActivity传递给SecondaryActivity,但是你会怎样做Vise Versa。这是我正在使用的代码,我只是不知道将Recieving类代码放在哪里。

在我的SecondActivity中

Intent intent = new Intent(SecondActivity.this, MainActivity.class);
String TimeValue = ("00:00:00");
intent.putExtra("TimeValue", TimeValue);
startActivity(intent)

这是我不确定放在哪里的代码,所以当应用程序启动时它不会崩溃

String intent = getIntent().getExtras().getString("TimeValue");
TextView timeText = (TextView)findViewById(R.id.timeText);
timeText.setText(intent);

2 个答案:

答案 0 :(得分:1)

问题在于,MainActivity始终不会使用来自SecondActivity的意图创建extras。它也将在应用程序启动时创建。

在尝试从中获取额外内容之前,您需要确保Bundle extras = getIntent().getExtras(); String intentString; if(extras != null) { intentString = extras.getString("TimeValue"); } else { intentString = "Default String"; } TextView timeText = (TextView)findViewById(R.id.timeText); timeText.setText(intentString); 实际存在!它可能是空的!

因此,在您对视图进行充气后,这应该在您的onCreate方法中。

Intent

我还强烈建议您将String的名称更改为" intentString"而不是"意图。"名称"意图"通常用于实际String个对象,而不是Intent中的1>d:\code\c++\games\chess\chess\manager.h(41): error C2079: 'Manager::Tex' uses undefined class 'Render' 1>d:\code\c++\games\chess\chess\render.h(32): error C2146: syntax error : missing ';' before identifier 'manager' 1>d:\code\c++\games\chess\chess\render.h(32): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>d:\code\c++\games\chess\chess\render.h(32): error C2146: syntax error : missing ';' before identifier 'manager' 1>d:\code\c++\games\chess\chess\render.h(32): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 。所以命名它" intentString"使其他开发人员更具可读性。

答案 1 :(得分:1)

如果您尝试将数据从SecondActivity传回MainActivity,请改用startActivityForResult

启动SecondActivity并准备好将数据传递回MainActivity后,创建一个新的Intent并使用SecondActivity.setResult(resultCode, Intent);。然后调用finish,完成SecondActivity。

现在,在您的MainActivity中,您将调用onActivityResult(),它将为您提供在SecondActivity中传递的Intent作为数据参数。

您可以查看此链接以获取更多信息:http://developer.android.com/training/basics/intents/result.html