1

問題の解決にご協力ください。タスク: ネットワーク リスナーを作成します。インターネットが失われた場合、ProgressDialog を表示します。

ProgressDialog dialog;
private IntentFilter mNetworkStateChangedFilter;
private BroadcastReceiver mNetworkStateIntentReceiver;


@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mNetworkStateChangedFilter = new IntentFilter();
        mNetworkStateChangedFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

        mNetworkStateIntentReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {



            if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
                NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
                mTypeName = info.getTypeName();
                mSubtypeName = info.getSubtypeName();
                mAvailable = info.isAvailable();

                Log.i(LOGTAG, "Network Type: " + mTypeName 
                    + ", subtype: " + mSubtypeName
                    + ", available: " + mAvailable + " isConnected: " + info.isConnected());
                if (!info.isConnected()){
                    try{
                    showDialog();
                    }catch (Exception e){

                    }

                    }
                else if (info.isConnected()){
                        dismissDialog();    
                }

            }
            }
        };

        setContentView(R.layout.activity_main);
    }

エミュレータを確認してください。設定に入り(操作OnPause)、インターネットのプラグを抜き、戻ります(onResume)-ダイアログを作成します、大丈夫です。再び設定で、インターネットをオンにすると、ダイアログが残ります。

@Override
    protected void onPause() {
        Log.d(LOGTAG, "onPause");
        super.onPause();
        unregisterReceiver(mNetworkStateIntentReceiver);
    };
    @Override
    protected void onResume() { 
        Log.d(LOGTAG, "onResume");
        super.onResume();
        registerReceiver(mNetworkStateIntentReceiver, mNetworkStateChangedFilter);
        unregisterReceiver(mNetworkStateIntentReceiver);
        registerReceiver(mNetworkStateIntentReceiver, mNetworkStateChangedFilter);
    };



public void showDialog() {
        dialog = ProgressDialog.show(this, "", "");
    }

public void dismissDialog() {
    try {
        dialog.dismiss();
    } catch (Exception e) {
        Log.i(LOGTAG, e.getMessage()); //Crash application
    }

    }

デバッグに失敗しました。Log.i(LOGTAG, e.getMessage());DismissDialog() では、アプリケーションがクラッシュします。

java.lang.RuntimeException: com.t.network.MainActivity$1@40519848 でブロードキャスト インテント { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x10000000 (エクストラがあります) } を受信中にエラーが発生しました

原因: java.lang.NullPointerException: println needs a message

Progress/Alert ダイアログを使用して接続をリッスンするにはどうすればよいですか?

感謝

PS

Log.i(LOGTAG, "Network Type: " + mTypeName 
                    + ", subtype: " + mSubtypeName
                    + ", available: " + mAvailable + " isConnected: " + info.isConnected());

普通に働く

PPS私は私の英語をお詫び申し上げます:)

4

0 に答える 0