Ich versuche, einen Button Click wie im Windows-Forum machen, aber ich mache etwas falsch, weil nichts auf der Konsole geschrieben wird, und der Text der Schaltfläche ändert sich nicht. Ich habe den Button-Text zu Testzwecken geändert. Auch ich bin mir bewusst, dass meine Methode für die Verbindung mit der SQL-Datenbank unsicher ist, jedoch ist diese Anwendung ausschließlich für den persönlichen Gebrauch und ab sofort Lernzwecke. Wie auch immer, hier ist mein Code:Xamarin-Taste klicken funktioniert nicht
Main.axml Code:
<Button
android:text="Login"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="15"
android:background="@drawable/buttonstyle"
android:id="@+id/buttonLogIn"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:drawableLeft="@drawable/lockicon"
android:textStyle="bold"
android:textColor="#FFFFFF" />
MainActivity.cs Code:
using System;
using Android.App;
using Android.Widget;
using Android.OS;
using CryptSharp;
using MySql.Data.MySqlClient;
using System.Data;
namespace App1
{
[Activity(Label = "TexByte", MainLauncher = true, Theme = "@android:style/Theme.Black.NoTitleBar.Fullscreen", Icon = "@drawable/Logo_Mob2")]
public class MainActivity : Activity
{
private EditText mtxtUsername, mtxtPassword;
private Button mBtnSignIn;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
mBtnSignIn = FindViewById<Button>(Resource.Id.buttonLogIn);
mtxtUsername = FindViewById<EditText>(Resource.Id.txtUsername);
mtxtPassword = FindViewById<EditText>(Resource.Id.txtPassword);
}
private void mBtnSignIn_Click(object sender, EventArgs args)
{
MySqlConnection con = new MySqlConnection("Server=127.0.0.1;User Id=root;Password=password;Database=login;");
try
{
string username = mtxtUsername.Text;
string password = mtxtPassword.Text;
if (con.State == ConnectionState.Closed)
{
con.Open();
MySqlCommand cmd = new MySqlCommand("SELECT * FROM members WHERE username = '" + username + "' order by password ");
cmd.CommandType = CommandType.Text;
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string hash = string.Format("{0}", rdr["password"]);
Console.WriteLine(hash);
if (Crypter.CheckPassword(password, hash))
{
Console.WriteLine("User name and Password Success ");
mBtnSignIn.Text = "Test";
}
else
{
Console.WriteLine("Unable to process request. Verify username and password are correct.");
mBtnSignIn.Text = "Fail";
}
}
}
}
catch(MySqlException ex)
{
Console.WriteLine("ERROR: Something went wrong. :(", ex.Message);
}
finally
{
con.Close();
}
}
}
}
Wo fügen Sie Ihrem 'Button' einen Event-Handler hinzu? Ich gehe nur aus früheren Erfahrungen mit C# + .Net. – ray
Wenn ich mich nicht irre, wäre das das? mBtnSignIn = FindViewById
Das findet nur das Schaltflächenobjekt. Ihr Schaltflächenobjekt muss angeben, welcher Code aufgerufen werden soll, um ein Ereignis, z. B. einen Klick, zu verarbeiten. Schau dir an, wie es in den Tutorials und Codebeispielen gemacht wird. – ray