2015-12-29 2 views
0

Прежде чем задать этот вопрос, у меня был поиск по Google & SO. Но безнадежно.Подключение к сети не работает во фрагменте Раздел

  • Проблема Connected Toast Показываются Когда Интернет Отсутствует.

Вот мой код. Мне нужны ваши острые советы.

protected boolean isInternetOn() { 

    ConnectivityManager connec = (ConnectivityManager)getActivity().getSystemService(getActivity().CONNECTIVITY_SERVICE); 

    //check for network connections 
    if(connec.getNetworkInfo(0).getState()== android.net.NetworkInfo.State.CONNECTED|| 
      connec.getNetworkInfo(0).getState()== android.net.NetworkInfo.State.CONNECTING|| 
      connec.getNetworkInfo(1).getState()== android.net.NetworkInfo.State.CONNECTING|| 
      connec.getNetworkInfo(1).getState()== android.net.NetworkInfo.State.CONNECTED){ 

     Toast.makeText(getActivity(), "Connected", Toast.LENGTH_LONG).show(); 
     return true; 
    }else if (connec.getNetworkInfo(0).getState()== android.net.NetworkInfo.State.DISCONNECTED|| 
      connec.getNetworkInfo(1).getState()== android.net.NetworkInfo.State.DISCONNECTED){ 
     Toast.makeText(getActivity(), "Not Connected", Toast.LENGTH_LONG).show(); 
     return false; 
    } 
    return false; 
} 

Теперь называют этот isInternetOn метод в моем abstract класс, который расширяет Fragment

Вот структура

public abstract class HomeTabFragment extends Fragment 
    // 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) 
    { 

     if (RootView == null) 
     { 
     isInternetOn(); 
     } 
    } 
Here return view// 

Я попытался,

ConnectivityManager connec = (ConnectivityManager)getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); 

любые парни Удовлетворяет ли этот вопрос? Любая помощь будет принята с благодарностью.

+0

вы проверили этот код в других actvities? –

+0

@beardedbeast Работает отлично в разделе активности. Но у абстрактного класса есть проблема. –

ответ

0

Попробуйте это:

ConnectivityManager connec = (ConnectivityManager)getActivity().getSystemService(getActivity().CONNECTIVITY_SERVICE); 

изменение

ConnectivityManager connec = (ConnectivityManager)getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); 
+0

#Quang Doan Sir. Спасибо за любезное внимание. Я уже пробовал. Но не работает. Этот код работает в разделе 'Активность'. Но здесь неверные возвращает –

+0

Я следовал http://stackoverflow.com/questions/16481334/check- network-connection-in-fragment –

0

Попробуйте этот путь. Может быть поможет вам

public boolean isConnectingToInternet(){ 
ConnectivityManager connectivity = (ConnectivityManager) getActivity().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 (RootView!= null) 
{ 
    isConnectingToInternet(); 
} 
+0

Пока не работает. Очень странный случай –

+0

обновить ваш logcat –

+0

Оба раза печатает 'return true;' –

0
You can write one class for check internet connection: 

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 

public class ConnectionDetector { 

    private Context _context; 

    public ConnectionDetector(Context context){ 
     this._context = context; 
    } 

    public boolean isConnectingToInternet(){ 
     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; 
    } 
} 

And After that you can check connection in your fragment by using below code: 

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) 
    { 
     cd = new ConnectionDetector(getActivity()); 
     isInternetPresent = cd.isConnectingToInternet(); 

     if (isInternetPresent) { 
      // Internet Connection is Present 
      Toast.makeText(getActivity(), "Connected", Toast.LENGTH_LONG).show(); 
     } else { 
      // Internet connection is not present 
      Toast.makeText(getActivity(), "Not Connected!", Toast.LENGTH_LONG).show(); 
     } 

     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_blank, container, false); 
    } 
+1

#vKuldeep Kulkarni: Я проверил это. –