在我的应用程序中,当我单击菜单按钮时,它将转到我将从远程服务器加载数据和图像到自定义列表视图的活动。问题是如果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");
}
在显示“检查网络连接”消息后,我想留在我呼叫的活动中。我应该在这做什么改变?
答案 0 :(得分: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" />
希望有所帮助......
答案 1 :(得分:1)
我认为不是使用try catch块,而是在调用第二个活动之前检查wifi连接是否可用。仅当连接可用时,才调用第二个活动。这样你就可以留在当前的活动中。 See this link解释了有关检查互联网连接的信息。
答案 2 :(得分:1)
一种方法是检测用户何时点击警告对话框的“确定”按钮,方法是定义DialogInterface.OnClickListener
,在其中调用YourActivity.this.finish()
以关闭活动并返回上一个活动。< / p>