-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");
}

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

4

3 回答 3

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" /> 

希望能帮助到你..

于 2012-09-24T04:51:51.553 回答
1

我认为不要使用 try catch 块,而是在调用第二个活动之前检查 wifi 连接是否可用。仅当连接可用时,才调用第二个活动。这样你就可以留在当前的活动中。请参阅此链接,其中解释了有关检查互联网连接的说明。

于 2012-09-24T04:42:45.083 回答
1

一种方法是检测用户何时点击警告对话框的 OK 按钮,方法是定义一个DialogInterface.OnClickListener您调用YourActivity.this.finish()以关闭活动并返回到前一个活动的方法。

于 2012-09-24T04:47:56.827 回答