我正在点击Parent的按钮开始子活动。我在儿童活动中计算一些结果(字符串类型)并完成孩子回到父母。有没有更好的方法来使用Intent或extras在Parent中获得该结果? (我可以通过在Child中将结果变量设置为public& static来获得Parent中的结果)请帮助我。我是android开发的新手。
startActivityForResult(new Intent(ParentActivity.this, ChildActivity.class), ACTIVITY_CONSTANT);
我应该在Parent的onActivityResult()中写什么?
答案 0 :(得分:28)
而不是startActivityForResult(new Intent(ParentActivity.this, ChildActivity.class), ACTIVITY_CONSTANT);
您可以使用putExtras()方法在活动之间传递值:
在儿童活动中:
Intent data = new Intent();
data.putExtra("myData1", "Data 1 value");
data.putExtra("myData2", "Data 2 value");
// Activity finished ok, return the data
setResult(RESULT_OK, data);
finish();
在Parent活动中,您可以覆盖onActivityResult(),并且可以使用Intent参数,并且可以从此方法的Intent参数中检索从子活动传递的额外值,例如intent.getStringExtra或intent。 getSerializableExtra。
例如:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
if (data.hasExtra("myData1")) {
Toast.makeText(this, data.getExtras().getString("myData1"),
Toast.LENGTH_SHORT).show();
}
}
}
答案 1 :(得分:3)
在家长活动中
Intent intent = new Intent(getApplicationContext(), yourChildActivity.class);
intent.putExtra("key", "value");
startActivityForResult(intent, ACTIVITY_CONSTANT);
在子活动中通过
发回父项活动的结果Intent data = new Intent();
data.putExtra("key1", "value1");
data.putExtra("key2", "value2");
// Activity finished return ok, return the data
setResult(RESULT_OK, data);
finish();
并在您的父活动中获取子活动结果信息
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
if (data.hasExtra("key1") && data.hasExtra("key2")) {
Toast.makeText(
this,
"Your reult is : "data.getExtras().getString("key1") + " " + data.getExtras().getString("key2"),
Toast.LENGTH_SHORT).show();
}
}
}