3

这可能是一个菜鸟问题,但我有一些疑问。我用谷歌搜索了很多,但一无所获。在为结果启动活动时,我们传递请求代码,并在结果上使用相同的请求代码和结果代码进行检查。我想知道有没有办法通过使用请求代码来实现执行不同的任务并从调用的活动中获得不同的结果,即如果使用不同的请求代码多次调用相同的活动,那么它会返回不同的结果。请告诉我该怎么做。我发现没有办法使用 switch 语句或任何其他方式来做到这一点。

我已经知道答案所以编辑这个。我想知道我是否可以使用以下场景:

Intent intent = new Intent(this, yourClass.class); 
intent.putExtras(b);
if(condition1)
startActivityForResult(intent, 1);
else
startActivityForResult(intent, 2);

我调用的 Activity 为请求代码 1 和 2 返回两个不同的结果,所以我可以拥有

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    //could replace it with a switch
    if (requestCode == 1){
        //condition 1
            }
        else if(requestCode == 2){
          //condition2
        }
}

即使用不同的请求代码调用相同的活动以从相同的活动中获得不同的结果。

谢谢

4

3 回答 3

2

发布的问题对我来说不是很清楚,您可以随时切换 activityForResult 并在 onActivityResult 方法中检查活动结果,检查不同的请求代码。这是一个代码演示,如何做到这一点:

使用此切换活动:

Intent intent = new Intent(this, yourClass.class); 
intent.putExtras(b);    // here
startActivityForResult(intent, 2); //put your code along : positive integer

检查此方法的结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    //could replace it with a switch
    if (requestCode == 1){
        //put your code here
            }
}

被调用的活动不需要知道您的请求代码,但是,如果您想做类似的事情,您可以通过在意图中传递您的请求代码来做到这一点,如下所示:

intent.putExtra("requestCode", requestCode); 

因此,访问您切换到的活动类中的意图变量..

于 2012-08-08T08:08:35.690 回答
0
 @Override
public void onClick(View view) {
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(cameraIntent, 1888);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if( requestCode == 1888 ) {

    }
}

或者

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode)
        case ACTIVITY1:
           if(resultCode == RESULT_OK)
              Toast.makeText(getApplicationContext(), "Activity 1 returned OK", Toast.LENGTH_LONG).show();
           break;
        case ACTIVITY2:
           if(resultCode == RESULT_OK)
              Toast.makeText(getApplicationContext(), "Activity 2 returned OK", Toast.LENGTH_LONG).show();
           break;
}
于 2012-08-08T07:59:59.277 回答
0

我真的不明白你想要做什么,但我知道你可以将任何你想要的代码从第一个活动返回。
例如,假设您有一个活动 A,A 调用startActivityForResult()活动 B,然后 B 做任何事情,然后返回 a resultCode,这resultCode可能是您想要的任何东西,例如 7、8、9.... 随便.
然后,如果您希望您的活动执行特定的操作,那么您也可以使用自定义 requestCode 启动它,因此当调用 onActivityResult() 时,您可以检查活动是否返回您想要的内容。

为此,我鼓励您使用静态整数值,例如RESULT_1RESULT_2...

onActivityResult()注意:如果您想从第一个活动被调用,您必须返回正值。然后只需使用开关来处理不同的resultCode值。

于 2012-08-08T08:01:57.643 回答