2013-04-09 80 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