开始活动以获得结果

时间:2012-08-08 07:54:36

标签: android android-activity start-activity

这可能是一个noob问题,但我有一些疑问。我google了很多但没有发现任何东西。 在结果的启动活动中,我们传递请求代码,结果我们检查相同的请求代码和结果代码。我想知道有没有办法实现执行不同的任务,并通过使用请求代码从被调用的活动获得不同的结果,即如果使用不同的请求代码多次调用相同的活动,则返回不同的结果。请告诉我该怎么做。我发现无法使用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
        }
}

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

由于

3 个答案:

答案 0 :(得分: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); 

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

答案 1 :(得分: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 ) {

    }
}

OR

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

答案 2 :(得分:0)

我真的不知道你想做什么,但我知道你可以将你想要的任何代码返回到第一个活动。
例如,假设您有一个活动A,A对活动B调用startActivityForResult(),那么B会做任何为其做的事情,然后返回resultCoderesultCode可以是任何内容你想要的,比如7,8,9 ......等等 然后,如果您希望您的活动执行特定的操作,那么您也可以使用自定义的requestCode启动它,因此当调用onActivityResult()时,您可以检查活动是否返回您想要的内容。登记/> 为此,我建议您使用静态整数值,例如RESULT_1RESULT_2 ...

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