我是C#和Android开发(使用Xamarin)的新手。我试图创建简单的登录屏幕来检查用户输入,如果用户输入与文本文件中的数据相匹配,它将显示登录成功,否则它会显示登录失败。将EditText与C#中的字符串比较
我不得不提到,我为此挣扎了近一天。我认为我已经搞乱了编码,所以我创建了简单的控制台应用程序,在那里复制了代码,并且它完美地工作,所以我认为我的问题与将字符串与来自EditText的用户输入进行比较有关。
应用程序构建成功,但每次按下与下面显示的方法相关的按钮时,我的应用程序崩溃并将我抛出。
我创建了两个名为user.txt和pass.txt的文本文件。 pass.txt中的第一行是用户在user.txt的第一行的密码。
再一次,我不得不提及代码在控制台应用程序中完美工作(我用简单的Console.Readline和带有Console.Writeline的Toast.MakeText替换了EditText中的user_input)。请问我做错了什么?
public void read_list(object sender, EventArgs e)
{
k = FindViewById<EditText>(Resource.Id.user);
z = FindViewById<EditText>(Resource.Id.pass);
string user_input = k.Text.ToString();
string pass_input = z.Text.ToString();
int count = 0;
bool valid = false;
const string person = "user.txt";
List<string> users = new List<string>();
using (StreamReader username = new StreamReader(person))
{
string line;
while ((line = username.ReadLine()) != null)
{
users.Add(line);
}
foreach (string s in users)
{
if (Equals(s, user_input))
{
valid = true;
break;
}
count++;
}
}
const string key = "pass.txt";
List<string> passwords = new List<string>();
bool pass_valid = false;
using (StreamReader password = new StreamReader(key))
{
string pass_line;
while ((pass_line = password.ReadLine()) != null)
{
passwords.Add(pass_line);
}
if (Equals(passwords[count], pass_input))
{
pass_valid = true;
}
else
{
pass_valid = false;
}
}
if ((pass_valid) && (valid))
{
Toast.MakeText(this, "Login successful", ToastLength.Short).Show();
}
else
{
Toast.MakeText(this, "Login failed", ToastLength.Short).Show();
}
}
如果应用程序崩溃,请显示错误日志 –
@языкK:没有错误日志。应用程序只是崩溃,并说“不幸的是,应用程序停止工作”,并抛出我。在Visual Studio或其他东西中没有一个错误。 – matejcro
我非常怀疑。你可以检查输出页面(在VS2013中查看>输出),看看是否有任何例外?应用程序不会在没有提供任何问题的情况下崩溃......除非你抑制了所有错误。 –