我有一个登录系统,用户必须注册并可以在注册帐户后登录。我想要做的是在成功登录后将用户信息显示为新的.axml。任何帮助将不胜感激。代码如下所示。
MainActivity.cs
using Android.App;
using Android.Widget;
using Android.OS;
using Android.Gms.Ads;
using SQLite;
using System.IO;
using System;
namespace LogInApplication
{
[Activity(Label = "Log In Application", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
protected AdView mAdView;
private InterstitialAd interstitialAds = null;
EditText txtusername;
EditText txtPassword;
Button btncreate;
Button btnsign;
Button btnedit;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
interstitialAds = new InterstitialAd(this);
mAdView = FindViewById<AdView>(Resource.Id.adView);
var adRequest = new AdRequest.Builder().Build();
mAdView.LoadAd(adRequest);
//setting unit id for interstitial ad
interstitialAds.AdUnitId = "ca - app - pub - 3113453000644941 / 8764416112";
//loading test ad using adrequest
interstitialAds.LoadAd(adRequest);
interstitialAds.AdListener = new AdListener(this);
btnsign = FindViewById<Button>(Resource.Id.btnlogin);
btncreate = FindViewById<Button>(Resource.Id.btnregister);
btnedit = FindViewById<Button>(Resource.Id.btnforgot);
txtusername = FindViewById<EditText>(Resource.Id.txtusername);
txtPassword = FindViewById<EditText>(Resource.Id.txtpwd);
btnsign.Click += Btnsign_Click;
btncreate.Click += Btncreate_Click;
btnedit.Click += Btnedit_Click;
CreateDB();
}
class AdListener : Android.Gms.Ads.AdListener
{
MainActivity main;
public AdListener(MainActivity innerMain)
{
main = innerMain;
}
public override void OnAdLoaded()
{
base.OnAdLoaded();
main.interstitialAds.Show();
}
}
private void Btncreate_Click(object sender, EventArgs e)
{
StartActivity(typeof(RegisterActivity));
}
private void Btnedit_Click(object sender, EventArgs e)
{
StartActivity(typeof(ForgotActivity));
}
private void Btnsign_Click(object sender, EventArgs e)
{
try
{
string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "user.db3"); //Call Database
var db = new SQLiteConnection(dpPath);
var data = db.Table<LoginTable>(); //Call Table
var data1 = data.Where(x => x.username == txtusername.Text && x.password == txtPassword.Text).FirstOrDefault(); //Linq Query
if (data1 != null)
{
Toast.MakeText(this, "Login Success", ToastLength.Short).Show();
StartActivity(typeof(WelcomeActivity));
}
else
{
Toast.MakeText(this, "Username or Password invalid", ToastLength.Short).Show();
}
}
catch (Exception ex)
{
Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();
}
}
public string CreateDB()
{
var output = "";
output += "Creating Database if it doesn't exits";
string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "user.db3"); //Create New Database
var db = new SQLiteConnection(dpPath);
output += "\n Database Created.....";
return output;
}
}
}
Main.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:weightSum="100"
android:minWidth="25px"
android:minHeight="25px">
<TextView
android:text="LOGIN"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black"
android:textSize="25sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/textView1" />
<EditText
android:id="@+id/txtusername"
android:layout_width="fill_parent"
android:textColorHint="@android:color/black"
android:hint="Username"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/txtpwd"
android:layout_width="fill_parent"
android:textColorHint="@android:color/black"
android:hint="Password"
android:inputType="textPassword"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btnlogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/ButtonLogInStyle"
android:textSize="20sp"
android:text="Log In"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="20dp" />
<Button
android:id="@+id/btnforgot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/ButtonLogInStyle"
android:textSize="15sp"
android:text="Forgot Password?"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp"
android:layout_marginBottom="20dp" />
<Button
android:id="@+id/btnregister"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/ButtonSignUpStyle"
android:textSize="20sp"
android:text="Register"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="170dp" />
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3940256099942544/6300978111" />
</LinearLayout>
答案 0 :(得分:0)
如果您想在用户登录后显示详细信息,您可以执行的操作是创建Services
文件夹并在其中创建静态类GlobalVars.cs
。它将用于放置您将使用的任何全局变量。在您的情况下,它将是Username
(在登录成功后将其设置),然后您可以在需要时再次从数据库中检索数据,或者创建一个User
类并将所有用户的详细信息放入其中。当您需要存储在GlobalVars.cs
中的变量时,您只需拨打Services.GlobalVars.variableName
为了让您了解这种方法,我将附上包含GlobalVars.cs
变量的User
示例。
/Services/GlobalVars.cs
public static class GlobalVars
{
public static User UserDetail;
... //other variables needed
}
AnotherActivity.cs
var DetailFromLogin = Services.GlobalVars.UserDetail;
或者
using Services;
...
//calling the variable
var DetailFromLogin = GlobalVars.UserDetail;
当然,通过使用此方法,您无法在应用关闭后保存登录凭据(因为它使用本地变量来存储它)。如果您希望在用户登录并执行检查后保存登录凭据,以便用户可以跳过登录页面,我建议您使用ISharedPreferences
。它会将数据保存在持久存储中。可以保存的数据是原始数据,例如int,boolean,string,float和stringset。请查看此thread。
希望这可以提供帮助。