我的adapter
的spinner
出现问题,它从SQLite数据库]中获取数据,并试图显示出一串字符串作为旋转器的结果。
它向我发送以下错误消息:
“引发了类型为'Java.Lang.NullPointerException'的异常。” 当我在运行应用程序的情况下单击微调器时,如果不在try / catch中,则应用程序将冻结。
有人可以帮我找出问题所在吗?下面的代码:
活动代码
private string[] _companyNames; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); SetContentView(Resource.Layout.a_plant); Spinner spCompanyName = FindViewById<Spinner>(Resource.Id.spCompanyName); EditText etPlantName = FindViewById<EditText>(Resource.Id.etPlantName); Button btnAdd = FindViewById<Button>(Resource.Id.btnAdd); Button btnSearch = FindViewById<Button>(Resource.Id.btnSearch); //Adds data to the spinner only if they dont exist already DBManager.LoadCompanySpinner(_companyNames); //shows data on spinner try { //THIS IS WHERE THE EXCEPTION IS CAUGHT ArrayAdapter<string> adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, _companyNames); // adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem); spCompanyName.Adapter = adapter; } catch (Exception ex) { Console.WriteLine(ex.Message); }
[
DBManager
代码以在spinner
上添加数据
我相信此代码有效,因为它将结果打印在控制台上。
//insert data in spinner
public static void LoadCompanySpinner(string[] l)
{
var t = DBManager.Instance.Query<Company>("Select CompanyName from company");
int size = t.Count;
if(size > 0)
{
l = new string[size + 1];
l[0] = "Select Company...";
for (var i = 0; i < size; i++)
{
l[i + 1] = t[i].CompanyName;
Console.WriteLine("added " + t[i].CompanyName);
}
}
}
我的微调器适配器有问题,该适配器从SQLite数据库中获取数据,并尝试显示一串字符串作为微调器的结果。它向我发送以下错误消息:“ ...
我终于解决了!