2014-04-23 81 views
0

MainActivity.java調用onCreate方法內onCreate方法中的Android

public class MainActivity extends FragmentActivity { 

    LocationManager locationManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

     if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
      showDialog(); 

     } 

    } 

    public void showDialog(){ 
     //GPS-Dialog 
     GpsEnablingDialog gpsAlert; 
     try { 
      gpsAlert = new GpsEnablingDialog(); 
      gpsAlert.show(getSupportFragmentManager(), "GpsAlert_Tag"); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      Log.d("My-Log-Msg",e.toString()); 
      e.printStackTrace(); 
     }  
    } 
} 

我試着用 ::

import android.content.Context; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.util.Log; 

public class MainActivity extends FragmentActivity { 

    LocationManager locationManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

     if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
      showDialog(); 
      try { 
       onCreate(savedInstanceState); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       Log.d("My-Log-Msg",e.toString()); 
      } 
     } 

    } 

    public void showDialog(){ 
     //GPS-Dialog 
     GpsEnablingDialog gpsAlert; 
     try { 
      gpsAlert = new GpsEnablingDialog(); 
      gpsAlert.show(getSupportFragmentManager(), "GpsAlert_Tag"); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      Log.d("My-Log-Msg",e.toString()); 
      e.printStackTrace(); 
     } 

    } 
} 

登錄 ::

04-23 14:22:19.969: D/My-Log-Msg(1586): java.lang.IllegalStateException: Already attached 
04-23 14:22:20.419: D/gralloc_goldfish(1586): Emulator without GPU emulation detected. 

我明白 ::

  • 從日誌我可以清楚地瞭解到我試圖連接 東西是已經連接
  • 爲什麼我這樣做::第一次活動它會檢查 是否已啓用GPS,並且會彈出一個對話框並將我帶至 設置頁面
  • 現在我啓用GPS,然後按手機上的返回按鈕,我返回到 MainActivity
  • 我想從begining重啓活動的生命週期,並檢查這些 GPS,並繼續進一步

就如何實現這一目標

+0

您是否嘗試在onResume()方法中重新啓動您的活動? –

回答

1

你不應該顯式調用onCreate()任何的IDE。 Android在創建活動時調用它。您應該檢查出the activity lifecycle,並查看當用戶從設置活動返回時是否無法將某些代碼移動到另一個回調方法(例如onResume())。

如果你真的希望有onCreate()再次打電話,你應該看看這是API等級11加Activity.recreate()如果你這個API,您可以解決此用下面的代碼如下:

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

這完成了該活動,並以與首先創建的相同的意圖重新開始。