2012-09-24 39 views
-1

在我的应用程序中,当我点击一个菜单按钮时,它将转到一个活动,我将从远程服务器加载数据和图像到自定义列表视图。问题是如果WiFi关闭,我在第二次活动中发生崩溃。我已经把代码放在try catch块中,并且在catch部分将适配器设置为null。所以当我点击按钮时它会去活动,如果WiFi关闭,因为我在catch活动中设置了adapter = null与列表视图一起显示。我怎样才能留在菜单屏幕出来得到崩溃。任何想法?如何留在应用程序中的活动 - 关闭应用程序

 Intent mainIntent = new Intent(SplashScreenActivity.this, GiftListActivity.class); 
     SplashScreenActivity.this.startActivity(mainIntent); 

这是我第二次活动的电话。

try{ 
    adapter = new GiftJewelryListAdapter(GiftListActivity.this, giftlist); 
    itemsListView.setAdapter(adapter); 
} 
catch(Exception e){ 
    adapter=null; 
    MyAlertDialog.ShowAlertDialog(GiftJewelryListActivity.this, "", "Check Network Connection", "OK"); 
} 

我想留在我从中调用活动,显示消息“检查网络连接”。什么变化,我应该在这里做之后?

回答

2

您可以在您从中调用新活动的活动中检查网络可用性。如果网络可用,您可以开始新的活动。

以下功能用于检测设备是否连接到网络。

public static boolean isNetworkAvailable(Context context) { 
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (connectivity != null) { 
     NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
     if (info != null) { 
      for (int i = 0; i < info.length; i++) { 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
       return true; 
       } 
      } 
     } 
    } 
    return false; 
    } 

您可以调用该函数如下所示...

if(!isNetworkAvailable(context)) 
    MyAlertDialog.ShowAlertDialog(GiftJewelryListActivity.this, "", "Check Network Connection", "OK") 
else{ 
    Intent mainIntent = new Intent(SplashScreenActivity.this, GiftListActivity.class); 
    SplashScreenActivity.this.startActivity(mainIntent); 
} 

不要忘记在manifest.xml中添加权限。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

希望它可以帮助..

+0

我相信你应该换大括号中的两个语句。 – Leeeeeeelo

+0

是的。谢谢@Leeeeeeelo :) –

+0

欢迎您!还应该将以下权限添加到Android Manifest Leeeeeeelo

1

我想不是使用try catch块,而是在调用第二个活动之前检查wifi连接是否可用。只有连接可用时,请致电第二个活动。这样你可以保持当前的活动。 See this link其中解释有关检查互联网连接。

1

一种方法是通过定义一个DialogInterface.OnClickListener来检测用户何时点击了警告对话框的确定​​按钮,您可以在其中调用YourActivity.this.finish()来关闭活动并返回到之前的活动。