我有两个activities
,我希望它们能够使用相同的数据但不同的views/layout
来回交互,并且可以在两个活动中执行相同的操作。
建议我使用startActivity
而不是startActivityForResult
因为返回到调用活动(活动 A(是可选的,但我认为这不是要走的路。
我看了又看,但一切都建议我使用startActivityForResult
.如果可能,那么不返回调用活动将如何影响程序?请指教,谢谢。
不,这不是强制性的。startActivity
和startActivityForResult
的使用几乎相同,只是如果您将startActivityForResult
与onActivityResult
一起使用,则"可以"从活动B(新活动(中获取一些数据。
如果您使用的是sartActivityForResult
则可以安全地忽略结果,如果 而且你真的不需要一些数据回来。
当您想要从现有活动的onActivityResult((方法中的第二个活动的结果中获得一些更新的数据时,startActivityForResult((很有用。如果你不需要结果,那么你可以简单地使用startActivity((。如果您不希望从第二个活动进行任何更新,则可以简单地调用startActivity((,或者如果您使用startActivityForResult((,则可以忽略onActivityResult((中第二个活动的意图数据。你可以像这样实现startActivityForResult((
第一活动.java
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 111);
第二活动.java
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
第一活动.java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 111) {
if(resultCode == Activity.RESULT_OK){
// got result from second activity
String result=data.getStringExtra("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}//onActivityResult