2017-03-09 66 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