我理解如何使用意图将字符串值从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);
答案 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