2017-04-30 11 views
0

私のアプリはインターネットに接続しているかどうかを確認しようとしていますか、インターネットがオフになっているときにアプリをオフにしたいときdialogTRY AGAIN内部インターネットが動作しなくても、私はいつもダイアログを開くことができます

public Boolean CheckInternetConnection(){ 
    ConnectivityManager manager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = manager.getActiveNetworkInfo(); 
    if(networkInfo != null && networkInfo.isConnected()) { 
     return true; 
    } 
    else 
     return false; 
} 

:ユーザーAGAIN TRYをクリックしボタンとinterent接続がまだショーDialog(インターネットもう一度試して動作しない)

チェックのインターネット接続方法を動作しませんボタン0

protected void onCreate(){ 
    ...... 
    ...... 
if(CheckInternetConnection()){ 
     Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show(); 
    } 
    else{ 
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
     builder.setIcon(R.mipmap.info) 
       .setTitle("Internet Connection !") 
       .setMessage("No Internet Connection") 
       .setNegativeButton("Try Again", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         if(CheckInternetConnection()){ 

          //TRY AGAIN and REOPEN DIALOG 



         } 
        } 
       }); 
     builder.setCancelable(false); 
     AlertDialog about = builder.create(); 
     about.show(); 
     TextView messageText = (TextView) about.findViewById(android.R.id.message); 
     assert messageText != null; 
     messageText.setGravity(Gravity.CENTER); 
     Button nbutton = about.getButton(DialogInterface.BUTTON_NEGATIVE); 
     nbutton.setTextColor(Color.BLACK); 

    } 

答えて

1

showDialog()のメソッドを個別に作成し、ダイアログを再度表示する必要があるときはいつでも呼び出すことができます。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // ... 
    if (isNetworkConnected()) { 
     Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show(); 
    } else { 
     showDialog(); 
    } 
} 

private void showDialog() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setCancelable(false); 
    builder.setMessage("No Internet Connection"); 
    builder.setNegativeButton("Try Again", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      if (isNetworkConnected()) { 
       Toast.makeText(MainActivity.this, "OK", Toast.LENGTH_SHORT).show(); 
      } else { 
       showDialog(); 
      } 
     } 
    }); 
    AlertDialog alertDialog = builder.create(); 
    alertDialog.show(); 
} 
0

接続が失敗し、「接続に失敗しました」などのダイアログが表示された場合は、以下のコードを試してください。

public class MyActivity implements NetworkStateReceiverListener { 
     private NetworkStateReceiver networkStateReceiver; 
    } 

OnCreate関数mainactivity

public void onCreate(Bundle savedInstanceState) { 
    /* ... */ 
    networkStateReceiver = new NetworkStateReceiver(); 
    networkStateReceiver.addListener(this); 
    this.registerReceiver(networkStateReceiver, new IntentFilter(android.net.ConnectivityManager.CONNECTIVITY_ACTION)); 
} 

mainactivity

@Override 
public void networkAvailable() { 
    // internet connection success 
} 

@Override 
public void networkUnavailable() { 
     //REOPEN DIALOG   
} 

受信

public class NetworkStateReceiver extends BroadcastReceiver { 

    protected List<NetworkStateReceiverListener> listeners; 
    protected Boolean connected; 

    public NetworkStateReceiver() { 
     listeners = new ArrayList<NetworkStateReceiverListener>(); 
     connected = null; 
    } 

    public void onReceive(Context context, Intent intent) { 
     if(intent == null || intent.getExtras() == null) 
      return; 

     ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo ni = manager.getActiveNetworkInfo(); 

     if(ni != null && ni.getState() == NetworkInfo.State.CONNECTED) { 
      connected = true; 
     } else if(intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) { 
      connected = false; 
     } 

     notifyStateToAll(); 
    } 

    private void notifyStateToAll() { 
     for(NetworkStateReceiverListener listener : listeners) 
      notifyState(listener); 
    } 

    private void notifyState(NetworkStateReceiverListener listener) { 
     if(connected == null || listener == null) 
      return; 

     if(connected == true) 
      listener.networkAvailable(); 
     else 
      listener.networkUnavailable(); 
    } 

    public void addListener(NetworkStateReceiverListener l) { 
     listeners.add(l); 
     notifyState(l); 
    } 

    public void removeListener(NetworkStateReceiverListener l) { 
     listeners.remove(l); 
    } 

    public interface NetworkStateReceiverListener { 
     public void networkAvailable(); 
     public void networkUnavailable(); 
    } 
} 
+0

relpyに感謝しかし、私はaleady 'パブリッククラスMainActivityがAppCompatActivityがNavigationView.OnNavigationItemSelectedListenerを'私は何をしている実装し拡張してい?? – MrMR

+0

public class MainActivityはAppCompatActivityの実装を拡張します。NavigationView.OnNavigationItemSelectedListener、NetworkStateReceiverListener {} – 6155031

関連する問題