如何使用sharedpreferences将名称存储在一个活动中并在另一个活动中使用它们?

时间:2018-02-24 04:25:08

标签: android

我使用此代码在登录活动中存储名称和密码!

 public void main_login(View v)
{
    Name = name.getText().toString();
    Password = password.getText().toString();
    BackGround b = new BackGround();
    b.execute(Name, Password);


    context = getApplicationContext();
    sp = getSharedPreferences("identifier", context.MODE_PRIVATE);
    SharedPreferences.Editor Ed= sp.edit();
    Ed.putString("Name",name.getText().toString()).commit();
    Ed.putString("Password",  password.getText().toString()).commit();
   // startActivity(new Intent(Login.this,Reg_Token_Id.class));
    startActivity(new Intent(this, Reg_Token_Id.class));

}

我得到了名称,密码,令牌使用sharedprefences,并将它们发送到php文件以在表中插入id。我能够举杯并能够看到名称,令牌,密码,但不能将它们发送到php文件

任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

您需要使用它而不是PreferenceManager.getDefaultSharedpreferences()

SharedPreference sp = context.getSharedPreferences("Identifier",Context.MODE_PRIVATE)

并在另一项活动中使用此“标识符”调用共享首选项

答案 1 :(得分:1)

这是在sharedpreferences中保存数据并从sharedpreferences获取数据的示例,希望它能帮到你。尝试 使用您自己的首选项名称而不是使用 PreferenceManager.getDefaultSharedPreferences(getBaseContext())

 public class BChooserPreferences {
        private final static String FILE = "b_chooser_prefs";
        private final static String FOLDER_NAME = "folder_name";
        private SharedPreferences preferences;

        public BChooserPreferences(Context context) {
            preferences = context.getSharedPreferences(FILE, Context.MODE_PRIVATE);
        }

        /**
         * Set the folder name to be used for all files or temporary files
         * @param folderName
         */
        public void setFolderName(String folderName){
            SharedPreferences.Editor editor = preferences.edit();
            editor.putString(FOLDER_NAME, folderName);
            editor.commit();
        }

        public String getFolderName(){
            return preferences.getString(FOLDER_NAME, "bichooser");
        }

    }

答案 2 :(得分:1)

更改您的login.java,如下所示。

SharedPreferences sp = getSharedPreferences("identifier", Context.MODE_PRIVATE);
SharedPreferences.Editor Ed= sp.edit();
Ed.putString("Name", Name).commit();
Ed.putString("Password", Password).commit();

您可以使用您喜欢的任何单词作为标识符。使用此标识符,您可以在第二个活动中检索SharedPreferences,如下所示。

SharedPreferences  mPrefs = getSharedPreferences("identifier", Context.MODE_PRIVATE);
String Name = mPrefs.getString("Name", null);
String Password = mPrefs.getString("Password", null);

使用上述内容,您将能够正确处理SharedPreferences

我已将您的后端php代码更改为如下所示。将它与您的代码进行比较。

<?php
 require "init.php";

    $token = $_POST["Token"];
    $Name = $_POST["Name"];
    $Password = $_POST["Password"];
    $user_id;

    $Sql = "SELECT * FROM `user_info` 
        WHERE `name`='".$Name."' AND 
        `password`='".$Password."';";

    $result = mysqli_query($con, $Sql);
    $retrive = array();
    while($row = mysqli_fetch_array($result))
    {
     $user_id =  $row['id']; 
    }

    $query ="INSERT INTO user(Token,Employeeid) Values ('".$token."', 
    '".$user_id."')";

    if (mysqli_query($con, $query)) {
    echo "New record created successfully";
    } else {
    echo "Error: " . $query . "<br>" . mysqli_error($con);
    }
    mysqli_close($con);
?>

如果您有任何疑问,请随时发表评论。