2013-04-09 120 views
0

假設我有這樣的代碼:安卓:當它創建退出活動

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_msmap); 
    setUpMapIfNeeded(); 
    if (mMap == null) { 
     return; 
    } 

在我開始我已經檢查了谷歌地圖庫可活動。但是,如果沒有SIM卡/互聯網連接,mMap仍會返回空值。

有人會認爲這是有效的,因爲谷歌地圖/谷歌播放實際上顯示與「確定」按鈕「不可用」的錯誤。但如果點擊它,應用程序掛起...

因此,當mMap == null時,我想簡單地退出顯示錯誤的活動構造函數,然後返回到先前的活動。有沒有辦法以某種方式優雅地做到這一點?

+4

嘗試調用完成()當你想退出 – BobTheBuilder 2013-04-09 14:24:01

+0

我認爲必須有somehing異常與地圖API。現在我立即得到「應用程序掛起」對話框(我之前先點擊Google Play「ok」按鈕後)。 – Tom 2013-04-09 16:46:27

+0

沒關係。我只需要使用return;完成後()當然。有用!謝謝:) – Tom 2013-04-09 17:51:32

回答

1

調用finish()將退出Activity

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_msmap); 
    setUpMapIfNeeded(); 
    if (mMap == null) { 
    finish(); 
    } 
} 
+1

我認爲這是第一個迴應,所以我將其設置爲正確答案。 (請注意:爲避免執行其餘的方法,還應該調用return;) – Tom 2013-04-09 17:54:00

+0

是的,這是正確的! – jaibatrik 2013-04-10 06:41:29

1

如何在活動中調用finish()

if (mMap== null){ 
    finish(); 
} 
1

嘗試調用finish()當你想退出:

if (mMap == null) { 
    finish(); 
    } 
+0

感謝您的回答,upvoted當然:) – Tom 2013-04-10 08:51:02

1
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_msmap); 
    setUpMapIfNeeded(); 
    if (mMap == null) { 
     AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); 
     dlgAlert.setMessage("Whatever your error is"); 
     dlgAlert.setTitle("Title"); 
     dlgAlert.setPositiveButton("Ok", 
      new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
      finish(); 
      } 
     }); 
     dlgAlert.create().show(); 
    } 
} 
+0

感謝您的延伸答案。我當然贊成它:) – Tom 2013-04-10 08:50:32