Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java,android:onActivityResult在一个活动中使用不同的参数_Android_Android Activity_Android Calendar - Fatal编程技术网

java,android:onActivityResult在一个活动中使用不同的参数

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

我有一个活动,其中我使用两个onActvityResults

一个用于日历视图:

@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
    }
}