我一直在使用Xamarin.android开发一个简单的Android应用程序一段时间,我刚刚开始使用主板开发,所以这对我来说很新,事情是我的应用程序应该是登录和注册表单。
我使用一个类来获取和组织List<T>
中的数据,事情是我得到null异常这里是我的代码
这很可能是一个简单的错误,最奇怪的是,当我尝试添加其他时,它在某些时候工作,没有工作删除它然后发生这种情况
事先提前using System;
using System.Collections.Generic;
using System.Linq;
namespace DemoAppXamarinStu {
public class Datos
{
public static List<string> UsuarioL;//= new List<string>()
static List<string> NombreL;//= new List<string>()
static List<string> ApellidoL;//= new List<string>()
static List<string> EmailL;// = new List<string>()
public static List<string> ContraseñaL;// = new List<string>();
public Datos()
{
UsuarioL = new List<string>();
NombreL = new List<string>();
ApellidoL = new List<string>();
EmailL = new List<string>();
ContraseñaL = new List<string>();
UsuarioL.Add("admin");
ContraseñaL.Add("admin");
NombreL.Add("administrador");
ApellidoL.Add("administrador");
EmailL.Add("admin@admin.com");
}
public static void agregar(string value1, string value2, string value3, string value4, string value5)
{
//Datos d = new Datos();
UsuarioL.Add(value1);
NombreL.Add(value2);
ApellidoL.Add(value3);
EmailL.Add(value4);
ContraseñaL.Add(value5);
}
}
}
哦,还要检查一下
an exception on a comment
答案 0 :(得分:2)
您正在尝试将对象添加到未实例化的列表中。您正在使用静态方法,因此未调用构造函数,因此未创建列表。
答案 1 :(得分:2)
那是因为你正在使用静态方法。
当调用静态方法时,不会调用构造函数(并且未初始化列表)。静态方法在类上调用,但构造函数在制作对象时会出现。
自己动手:在方法和构造函数上应用断点,并且会看到构造函数永远不会被击中。
要解决此问题,请像这样初始化它们(基本上取消注释您的代码,它会正常工作。)
public static List<string> FooBar = new List<string>();
答案 2 :(得分:2)
您正在从静态方法访问静态字段,并在类的构造函数中实例化列表。我不想做你想做的事。
每次实例化类时,都会重新实例化静态字段。并且您需要实例化一次类以实例化静态字段...
为什么不取消注释// new List<String>()
并在构造函数中删除?
答案 3 :(得分:1)
您在agregar()
方法中使用静态数据成员,并且您没有初始化所有列表。您正在初始化Datos
构造函数中的所有静态数据成员。构造函数从未调用过。