java,android:onActivityResult在一个活动中使用不同的参数
我有一个活动,其中我使用两个onActvityResults 一个用于日历视图:java,android:onActivityResult在一个活动中使用不同的参数,android,android-activity,android-calendar,Android,Android Activity,Android Calendar,我有一个活动,其中我使用两个onActvityResults 一个用于日历视图: @Override protected void onActivityResult(int requestCode, int responseCode, Intent intent) 一个用于检索Google日历中的事件: @Override protected void onActivityResult(int requestCode, int resultCode, Intent da
@Override
protected void onActivityResult(int requestCode, int responseCode, Intent intent)
一个用于检索Google日历中的事件:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
我如何将这两项活动合二为一?谢谢 你没有。你只有一个,但它们应该有不同的代码,这就是你如何区分结果是来自日历视图还是谷歌日历或其他东西 看来你还没有完全理解这个概念!这可能有助于您了解活动结果 通过使用
startActivityForResult(Intent-Intent,int-requestCode)
您可以启动另一个活动,然后在onActivityResult()
方法中从该活动接收结果。因此onActivityResult()
是从您启动另一个活动的地方开始的
onActivityResult(int-requestCode、int-resultCode、Intent-data)
检查此处的参数。请求代码用于过滤从何处获得结果。因此,您可以使用请求代码识别不同的数据
示例
public class MainActivity extends Activity {
// Use a unique request code for each use case
private static final int REQUEST_CODE_EXAMPLE = 0x9988;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create an Intent to start AnotherActivity
final Intent intent = new Intent(this, AnotherActivity.class);
// Start AnotherActivity with the request code
startActivityForResult(intent, REQUEST_CODE_EXAMPLE);
}
//-------- When a result is returned from another Activity onActivityResult is called.--------- //
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// First we need to check if the requestCode matches the one we used.
if(requestCode == REQUEST_CODE_EXAMPLE) {
// The resultCode is set by the AnotherActivity
// By convention RESULT_OK means that what ever
// AnotherActivity did was successful
if(resultCode == Activity.RESULT_OK) {
// Get the result from the returned Intent
final String result = data.getStringExtra(AnotherActivity.EXTRA_DATA);
// Use the data - in this case, display it in a Toast.
Toast.makeText(this, "Result: " + result, Toast.LENGTH_LONG).show();
} else {
// AnotherActivity was not successful. No data to retrieve.
}
}
}
}
AnotherActivity
您可以使用onActivityResult
方法的requestCode
参数。使用不同的请求代码为两种场景调用startActivityForResult
方法
例如
现在在您的onActivityResult
中:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CALENDAR_VIEW_CALL) {
//do the callback work for calendar view
}
else if (requestCode == CALENDAR_EVENTS_CALL) {
//do the callback work after retrieving the events
}
}
但是你没有使用不同参数的方法,你有相同的方法,使用相同的参数,只是参数的名称不同,在java中你不能这样做,因为语言并不真正知道哪个方法是哪个
您应该按照其他答案检查requestCode只要在onActivityResult方法中检查requestCode的值,就可以了。在使用调用
setResult()的活动的intent调用这两个活动时,可以为这两个活动设置不同的请求代码;完成()代码>不关心Intent参数的名称
private static int CALENDAR_VIEW_CALL = 1;
private static int CALENDAR_EVENTS_CALL = 2;
...
startActivityForResult(intent1, CALENDAR_VIEW_CALL);
...
startActivityForResult(intent1, CALENDAR_EVENTS_CALL);
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CALENDAR_VIEW_CALL) {
//do the callback work for calendar view
}
else if (requestCode == CALENDAR_EVENTS_CALL) {
//do the callback work after retrieving the events
}
}