0

アプリケーションに問題があります。Runnable を実装する FrameRoll という内部クラスを持つ ExperimentView というアクティビティがあります。

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
  }

}

GPS データを取得するために、onCreate メソッドからサブアクティビティを呼び出しています。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);

}

内部クラス (フレームロール) からサブアクティビティを呼び出そうとすると、サブ アクティビティは正常に実行されますが、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()た。

私が試したすべてのメソッドは失敗しましたonCreate.onActivityResultは、サブアクティビティが呼び出されたときにのみ呼び出されます.誰も私が何をすべきか知っていますか?

ありがとう:)

4

1 に答える 1

1

onActivityResult呼び出されたアクティビティが終了すると呼び出されます。finish();したがって、結果を設定してから呼び出す必要があります。例えば:

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

* onCreateや他のメソッドをオーバーライドしていないように見えるため、クラスがActivityGpsHandlerの正しい実装に準拠していることを確認してください。

于 2012-09-28T11:16:52.253 に答える