2017-06-08 66 views
1

我創建了一個連接到mysql數據庫的登錄頁面。 在activity_user_login.xml中,我輸入了2個editText作爲電子郵件和密碼以及登錄Botton,我添加了一個用於保存數據的複選框。 我想保存電子郵件和密碼。
但是,我無法添加sharedPreference。 下面的完整代碼..你可以幫我嗎?謝謝如何使用共享首選項複選框 - Android Studio

activity_user_login.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_user_login" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.myapp.UserLoginActivity" 
    android:background="#FF5722" 
    android:padding="20dp"> 

    <TextView 
     android:text="User Login Form" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/textView" 
     android:gravity="center" 
     android:textSize="20dp" 
     android:textColor="#fff"/> 

    <EditText 
     android:layout_width="fill_parent" 
     android:layout_height="50dp" 
     android:background="#fbfefd" 
     android:inputType="textPersonName" 
     android:ems="10" 
     android:layout_below="@+id/textView" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="20dp" 
     android:id="@+id/email" 
     android:hint="Enter Your Email Here" 
     android:gravity="center" 
     /> 

    <EditText 
     android:layout_width="fill_parent" 
     android:layout_height="50dp" 
     android:background="#fbfefd" 
     android:inputType="textPassword" 
     android:ems="10" 
     android:layout_below="@+id/email" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="20dp" 
     android:id="@+id/password" 
     android:hint="Enter Your Password Here" 
     android:gravity="center"/> 

    <Button 
     android:text="Log In Here" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/password" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="20dp" 
     android:id="@+id/Login" /> 

    <CheckBox 
     android:id="@+id/saveLoginCheckBox" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/editTextPassword" 
     android:text="Save Login?" 
     android:textColor="#FFF" /> 

</RelativeLayout> 

UserLoginActivity.java

package com.myapp.myappcode; 

import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.text.TextUtils; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
import java.util.HashMap; 


public class UserLoginActivity extends AppCompatActivity { 

    EditText Email, Password; 
    Button LogIn ; 
    String PasswordHolder, EmailHolder; 
    String finalResult ; 
    String HttpURL = "http://mysite/User/UserLogin.php"; 
    Boolean CheckEditText ; 
    ProgressDialog progressDialog; 
    HashMap<String,String> hashMap = new HashMap<>(); 
    HttpParse httpParse = new HttpParse(); 
    public static final String UserEmail = ""; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user_login); 

     Email = (EditText)findViewById(R.id.email); 
     Password = (EditText)findViewById(R.id.password); 
     LogIn = (Button)findViewById(R.id.Login); 

     LogIn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       CheckEditTextIsEmptyOrNot(); 

       if(CheckEditText){ 

        UserLoginFunction(EmailHolder, PasswordHolder); 

       } 
       else { 

        Toast.makeText(UserLoginActivity.this, "Please fill all form fields.", Toast.LENGTH_LONG).show(); 

       } 

      } 
     }); 
    } 
    public void CheckEditTextIsEmptyOrNot(){ 

     EmailHolder = Email.getText().toString(); 
     PasswordHolder = Password.getText().toString(); 

     if(TextUtils.isEmpty(EmailHolder) || TextUtils.isEmpty(PasswordHolder)) 
     { 
      CheckEditText = false; 
     } 
     else { 

      CheckEditText = true ; 
     } 
    } 

    public void UserLoginFunction(final String email, final String password){ 

     class UserLoginClass extends AsyncTask<String,Void,String> { 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 

       progressDialog = ProgressDialog.show(UserLoginActivity.this,"Loading Data",null,true,true); 
      } 

      @Override 
      protected void onPostExecute(String httpResponseMsg) { 

       super.onPostExecute(httpResponseMsg); 

       progressDialog.dismiss(); 

       if(httpResponseMsg.equalsIgnoreCase("Data Matched")){ 

        finish(); 

        Intent intent = new Intent(UserLoginActivity.this, DashboardActivity.class); 

        intent.putExtra(UserEmail,email); 

        startActivity(intent); 

       } 
       else{ 

        Toast.makeText(UserLoginActivity.this,httpResponseMsg,Toast.LENGTH_LONG).show(); 
       } 

      } 

      @Override 
      protected String doInBackground(String... params) { 

       hashMap.put("email",params[0]); 

       hashMap.put("password",params[1]); 

       finalResult = httpParse.postRequest(hashMap, HttpURL); 

       return finalResult; 
      } 
     } 

     UserLoginClass userLoginClass = new UserLoginClass(); 

     userLoginClass.execute(email,password); 
    } 

} 
+0

爲了什麼目的你想使用sharedPreference ...? – Syed

+0

你想多個電子郵件和密碼保存嗎? –

+0

我想使用共享首選項來允許用戶保存登錄 – LittleGuy

回答

0
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedpreferences.edit(); 

// get e mail and pass on button click and save it like this 
      editor.putString(pass, ps); 
      editor.putString(Email, e); 
      editor.commit(); 

,並把它找回來:

String n = ed1.getText().toString(); 
      String pass = ed2.getText().toString(); 
      String e = ed3.getText().toString(); 

這裏是例子link.

+0

一旦你保存了這些值,我該如何將它們重新插入到EditText中? – LittleGuy

+0

獲取上面的示例代碼的值,然後edittext.setText(yourValue); – Simo

0

複選框被選中然後把值共享偏好

把值共享偏好

SharedPreferences pref=getSharedPreferences("values",Context.MODE_PRIVATE); 
pref.edit().putString("email", Email.getText().toString()); 
pref.edit().putString("pass", Password.getText().toString()); 
pref.apply(); 

從共享偏好獲取值

SharedPreferences pref=getSharedPreferences("values", Context.MODE_PRIVATE); 
String useremail=pref.getString("email","def_val"); 
String password=pref.getString("pass","def_val"); 

DEF_VAL更換與空或任何東西

+0

你能幫助我嗎?我不明白它在代碼中的位置。謝謝 – LittleGuy

+0

感謝Raj,但我haver一個錯誤pref.apply()....申請無法解決方法 – LittleGuy

+0

Scusam雷樂趣,你可以寫我所有的UserLoginActivity.java的代碼,所以我避免了錯誤。非常感謝你的混亂 – LittleGuy