0

我的应用程序有问题。我有一个名为 ExperimentView 的活动,它有一个名为 FrameRoll 的内部类,它实现了 Runnable。

public class ExperimentView extends Activity implements OnClickListener,{

    public void onCreate(Bundle savedInstanceState) {
      //Other stuff
      //Call the gpshandler activity
      gpsCall();
    }

    public void gpsCall() {
     if (gpsEnabled.equalsIgnoreCase("true")) {

        Intent gpsHandler = new Intent(ExperimentView.this,
                GpsHandler.class);
        startActivityForResult(gpsHandler,
                GPSHANDLER_ACTIVITY_RETURN);
finish();

       }
  }
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
     //retrieve the data
  }

  public class FrameRoll implements Runnable {
     //do other stuff
  }

}

我正在从 onCreate 方法调用一个子活动,以检索一些 gps 数据。成功检索了 gps 数据。

public class GpsHandler extends Activity {

    //obtain location
enter code here
Intent resultIntent = new Intent();
                resultIntent.putExtra("location",
                        optimalLocation.toString());

              setResult(Activity.RESULT_OK, resultIntent);

}

当我尝试从内部类(frameroll)调用子活动时,子活动正常运行,但从不调用 ExperimentVIew 中的 onActivityResult 方法,因此我没有得到任何数据。

public class ExperimentView extends Activity implements OnClickListener,{

    public void onCreate(Bundle savedInstanceState) {
      //Other stuff
      //Call the gpshandler activity
      gpsCall();
    }

    public void gpsCall() {
     if (gpsEnabled.equalsIgnoreCase("true")) {

        Intent gpsHandler = new Intent(ExperimentView.this,
                GpsHandler.class);
        startActivityForResult(gpsHandler,
                GPSHANDLER_ACTIVITY_RETURN);

       }
  }
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
     //retrieve the data
  }

  public class FrameRoll implements Runnable {
     gpsCall();
  }

}

我尝试了不同的东西,包括onActivityResult在嵌套类中实现,尝试做类似的事情ExperimentView.this.startActivityForResults(),我在 gpshandler 中打印了调用活动,它是 ExperimentView。

我尝试的每个方法都失败了。仅当从 . 调用子活动时才调用 onActivityResult 。onCreate有人知道我该怎么办吗?

谢谢:)

4

1 回答 1

1

onActivityResult一旦您的被调用活动完成,就会被调用。因此,您需要finish();在设置结果后调用。例如:

setResult(Activity.RESULT_OK, resultIntent);
finish();

*确保您的GpsHandler类符合Activity的正确实现,因为它似乎没有覆盖onCreate和/或其他方法。

于 2012-09-28T11:16:52.253 回答