我是一位经验丰富的 Java 程序员,正在迈出 Android 开发的第一步。我的问题很简单,我的 onActivityResult()
没有在主 Activity 中执行。这是我所做的。
在MainActivity
的onCreate
方法中,
Intent intent = new Intent(MainActivity.this, NewScreen.class);
startActivityForResult(intent,RESULT_OK);
我确实覆盖了 MainActivity
中的 onActivityResult
方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("Debug", "Received");
}
在 NewScreen
Activity 中:
Intent intent = new Intent(NewScreen.this, MainActivity.class);
this.setResult(RESULT_OK,intent);
Log.d("Debug", "Setting the Result");
finish();
我的 list 文件:
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="NewScreen"></activity>
</application>
最佳答案
您使用了 RESULT_OK
作为请求代码。 RESULT_OK
的值为负(实际上是 -1
)。这就是为什么您没有收到 NewScreen
Activity 的结果。如果您查看 requestCode
argument 的文档,它说:
requestCode
If >= 0, this code will be returned in onActivityResult() when the activity exits.
因此,您应该定义非负请求代码并将其用于startActivityForResult
。这是示例:
public class MainActivity extends Activity
{
static final int REQUEST_CODE = 13;
@Override
public void onCreate(Bundle savedInstanceState)
{
//...
Intent intent = new Intent(MainActivity.this, NewScreen.class);
startActivityForResult(intent, REQUEST_CODE);
}
}
关于android - 为什么 onActivityResult() 没有被执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479736/