getActivity()返回null

时间:2014-04-12 15:39:54

标签: android

我正在尝试使用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。是否有可能解决问题的方法。

提前致谢

2 个答案:

答案 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()中的所有处理程序回调。