Android 未从主类调用onActivityResult

Android 未从主类调用onActivityResult,android,android-intent,Android,Android Intent,我的应用程序有问题。我有一个名为“实验视图”的活动,它有一个名为FrameRoll的内部类,它实现了Runnable public class ExperimentView extends Activity implements OnClickListener,{ public void onCreate(Bundle savedInstanceState) { //Other stuff //Call the gpshandler activity

我的应用程序有问题。我有一个名为“实验视图”的活动,它有一个名为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
,尝试执行类似于
实验视图的操作。这个.startActivityForResults()
,我在gpshandler中打印了callingActivity,它就是实验视图

我尝试的每个方法都失败了。只有在从
onCreate
调用子活动时,才会调用onActivityResult。没有人知道我该怎么做吗


Thanx:)

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

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

*确保您是
GpsHandler
类符合活动的正确实现,因为它似乎不会覆盖onCreate和/或其他方法。

对不起,我忘了添加finish();但是我的代码中有它。所以这并不能解决任何问题。我的主要问题是,当在创建时调用相同的东西时,它会非常完美。当从内部类调用它时,onActivity不会被调用。这取决于,如果runnable在UI线程上运行,那么它肯定会工作。演示如何执行runnableHere。它是内部类。gpscall位于底部