2017-03-09 44 views
0

我有一个登录系统,用户必须注册并在注册帐户后才能登录。我试图做的是成功登录后显示用户信息到一个新的.axml。任何帮助将不胜感激。代码如下所示。登录后显示用户信息Xamarin Android

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

那么,什么问题? – hankide

回答

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; 

当然,通过使用这种方法,你不能保存登录信誉ential一旦应用程序关闭(因为它使用本地变量来存储它)。如果您希望在用户登录后执行登录凭证并执行检查以便用户可以跳过登录页面,我建议您使用的登录凭证是ISharedPreferences。它会将数据保存在持久存储器中。可以在那里保存的数据是基本数据,例如int,boolean,string,float和stringset。看看这个thread

希望这可以帮助。

+0

我应该在用户类中放什么? – Lawrence

+0

这取决于你,你想从用户记录什么数据?一般来说,您想记录有关用户名,密码,姓名,地址和其他信息。 –

+0

如何将其插入User类中? – Lawrence