-1

私のアプリでは、メニューボタンをクリックすると、リモートサーバーからカスタムリストビューにデータと画像を読み込むアクティビティに移動します。問題は、WiFiがオフになっている場合、2番目のアクティビティでクラッシュが発生することです。コードをtrycatchブロックに入れ、catchセクションでアダプターをnullに設定しました。したがって、ボタンをクリックするとアクティビティが実行され、WiFiがオフの場合は、catchアクティビティでadapter=nullを設定します。リストビューなしで表示されます。クラッシュせずにメニュー画面に留まるにはどうすればよいですか。何か案が?

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

これは私の2番目の活動への呼びかけです。

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ブロックを使用する代わりに、2番目のアクティビティを呼び出す前にwifi接続が利用可能かどうかを確認すると思います。接続が利用可能な場合にのみ、2番目のアクティビティを呼び出します。このようにして、現在のアクティビティにとどまることができます。インターネット接続の確認について説明しているこのリンクを参照してください。

于 2012-09-24T04:42:45.083 に答える
1

1つの方法は、アクティビティを閉じて前のアクティビティに戻るためにDialogInterface.OnClickListener呼び出すを定義することにより、ユーザーが警告ダイアログボックスの[OK]ボタンを押したことを検出することです。YourActivity.this.finish()

于 2012-09-24T04:47:56.827 に答える