2013-07-02 137 views
0

首先,这不是一个从活动中获取结果的问题。onActivityResult()很奇怪

我有这样的代码:

public void onActivityResult(int requestCode,int resultCode, Intent pData) 
     { 
    if (requestCode == CODIGO_RESPUESTA) 
      { 
     if (resultCode == Activity.RESULT_OK)   { 
      final String dato = pData.getExtras().getString("valorid");//Obtengo el string de la subactividad 
      Target = pData.getExtras().getString("valorSujeto"); 
      String a=Target; 
      id=Long.parseLong(dato); 
      Reset(); 
     } 
    } 
} 

好,这就是问题所在:复位()函数的工作,如果在代码中调用everwhere,但失败时,它从这个onActivityResult()

称为当我说失败时,我的意思是奇怪的事情发生:Reset()是一个管理天文钟的功能,并预设它来确定值。代码中随处可见的Reset()会导致Chronometer正确复位。但是从onActivityResults调用,这是徒劳的。

我是Java/Android编程的完全新手,但我一直在寻找这个问题,我没有找到任何东西。

我很感谢您的帮助,谢谢!

编辑:复位()

public void ResetCrono() { 
      TimeRef=timeWhenStopped; 
      Cronometro.setBase(SystemClock.elapsedRealtime() + timeWhenStopped+offsetTotalms); 
      CronometroParcial.setBase(SystemClock.elapsedRealtime() - timeWhenStoppedRelative +offsetTotalms); 
      Cronometro.start(); 
      Cronometro.stop(); 
      CronometroParcial.start(); 
      CronometroParcial.stop(); 
      } 
+0

这样就是Reset()里面的问题不是吗?当onActivityResult()被调用时,Reset()有什么不在那里? – kosa

+0

“我的意思是奇怪的事情发生”意味着什么?该功能是否运行或您得到意想不到的结果? – codeMagic

+0

该功能运行,但Chrono不会重置。我要编辑问题以发布reset()函数。 – user2544040

回答

0

您的天文钟很可能是由你的活动的onStop()方法中断。 whateever调用onActivityResult也会强制onStop方法运行。要测试此理论,请在您的活动的onResume()方法中放入reset(),当您运行活动时,请按住Android设备上的主页按钮,然后返回到应用程序中(通过进入最近打开的应用程序,而不是通过按再次启动)

复位()将被调用,这将有助于你缩小了什么事,或者你可以看到,如果天文台表工作正常

我也可能是完全不正确的,但我会抓住机会

+0

我尝试过像你这样的事情说:我使用了一个启动ResetCrono()的按钮;它的工作原理。我想我需要ResetCrono();从主活动中调用,而不是从onActivityResult调用。有可能以某种方式做到这一点? – user2544040

+0

@ user2544040您可以在下一个活动运行(在主要活动中调用onActivityResult)之前调用onPause()中的ResetChrono() – CQM

+0

但是我需要子活动返回的值以预先设置计时器,所以我恐怕我不能使用onPause():( – user2544040