在我的应用程序中,我想测试设备是否已连接到互联网并相应地运行一些代码,在搜索互联网后显然以下代码应该可以工作:
ConnectivityManager connMgr = (ConnectivityManager)getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
但事实并非如此。
调试器告诉我
the name getActivity doesn't exist in the current context
这段代码有什么问题?这是完整的 fragment2.cs 文件:
using Android.OS;
using Android.Support.V4.App;
using Android.Views;
using Android.Webkit;
using Android.Net;
using Android.Widget;
using System;
namespace TabsApp.Fragments
{
public class Fragment2 : Fragment
{
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your fragment here
}
public static Fragment2 NewInstance()
{
var frag2 = new Fragment2 { Arguments = new Bundle() };
return frag2;
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignored = base.OnCreateView(inflater, container, savedInstanceState);
View v = inflater.Inflate(Resource.Layout.fragment2, container, false);
ConnectivityManager connMgr = (ConnectivityManager)getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
return v;
}
}
}
最佳答案
你在这里做的是java代码:
Xamarin 适用于 C#,因此 getter 和 setter 不是方法而是属性:
ConnectivityManager connMgr = (ConnectivityManager)this.Activity.GetSystemService(Android.Content.Context.ConnectivityService);
NetworkInfo networkInfo = connMgr.ActiveNetworkInfo;
祝你好运!
关于c# - 连接管理器在 xamarin.android fragment 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49794151/