2013-07-02 185 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