我正在尝试使用getActivity()连接到网络。我的代码如下:
public void calledHandler(View view){
//Return a handle to the system-level service by name
if(getActivity()==null){
Log.d("Yes", "IT IS NULL");
}
ConnectivityManager connmngr=(ConnectivityManager)getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkinfo=connmngr.getActiveNetworkInfo();
if(networkinfo!=null && networkinfo.isConnected()){
Toast.makeText(getActivity(), new DownloadWebpageTask().doInBackground(stringurl), Toast.LENGTH_LONG).show();
textview.setText(new DownloadWebpageTask().doInBackground(stringurl));
}else{
Toast.makeText(getActivity(), "No network connection available", Toast.LENGTH_LONG).show();
textview.setText("No network connection available");
}
}
getActivity()一直返回null。是否有可能解决问题的方法。
提前致谢
答案 0 :(得分:0)
你应该像这样使用onAttach:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// Examples of how to use getActivity()
db = new DatabaseHelper(getActivity());
androidId = Secure.getString(getActivity().getContentResolver(),
Secure.ANDROID_ID);
}
这是从我使用片段的一个项目中复制的。
答案 1 :(得分:0)
Fragment中的活动并不总是可用。
您可以在调用getActivity()
之后但在调用onAttach()
之前致电onDetach()
。
您可以在大多数回调方法中使用getActivity()
,例如onCreate()
,onCreateView()
等,但在构造函数中从不。
您应该停止所有线程并取消片段的onPause()
或onStop()
中的所有处理程序回调。