我使用Java中的SharedPreferences
构建了一个简单的注册和登录应用。用户注册他的信息并登录。登录后,应用程序仅在屏幕上显示其信息。我想要的是我想在DisplayScreen
活动中显示所有注册会员的信息列表。我该怎么办?
您可以在下面看到我所有的xml和java文件。
activity_main 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:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
tools:context=".MainActivity">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/etName"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="75dp"
android:hint="Enter Name" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/etPassword"
android:layout_below="@+id/etName"
android:layout_centerHorizontal="true"
android:hint="Enter Password" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login"
android:id="@+id/btnLogin"
android:layout_below="@+id/etPassword"
android:layout_alignLeft="@+id/etPassword"
android:layout_alignStart="@+id/etPassword" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Register"
android:id="@+id/btnRegister"
android:layout_alignTop="@+id/btnLogin"
android:layout_toRightOf="@+id/btnLogin"
android:layout_toEndOf="@+id/btnLogin" />
</RelativeLayout>
MainActivity.java:
package com.example.odev1v2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText etName = (EditText) findViewById(R.id.etName);
final EditText etPassword = (EditText) findViewById(R.id.etPassword);
Button btnLogin = (Button) findViewById(R.id.btnLogin);
Button btnRegister = (Button) findViewById(R.id.btnRegister);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String user = etName.getText().toString();
String password = etPassword.getText().toString();
SharedPreferences preferences = getSharedPreferences("MYPREFS", MODE_PRIVATE);
String userDetails = preferences.getString(user + password + "data","NO INFO.");
SharedPreferences.Editor editor = preferences.edit();
editor.putString("display",userDetails);
editor.commit();
if(userDetails.equals("NO INFO.")){
Toast.makeText(getApplicationContext(), "FAIL", Toast.LENGTH_LONG).show();
}
else{
Intent displayScreen = new Intent(MainActivity.this, DisplayScreen.class);
startActivity(displayScreen);
}
}
});
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent registerScreen = new Intent(MainActivity.this, Register.class);
startActivity(registerScreen);
}
});
}
}
display_info.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DisplayScreen">
<TextView
android:textSize="20sp"
android:textStyle="bold"
android:layout_width="150dp"
android:layout_height="50dp"
android:text="New Text"
android:id="@+id/textViewName"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="100dp" />
</RelativeLayout>
DisplayScreen.java:
package com.example.odev1v2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.TextView;
public class DisplayScreen extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display_info);
SharedPreferences preferences = getSharedPreferences("MYPREFS", MODE_PRIVATE);
String display = preferences.getString("display", "");
TextView displayInfo = (TextView) findViewById(R.id.textViewName);
displayInfo.setText(display);
}
}
register.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Register">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/etNewName"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="58dp"
android:hint="Enter Name" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/etNewPassword"
android:layout_below="@+id/etNewName"
android:layout_centerHorizontal="true"
android:hint="Enter Password" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/etNewEmail"
android:layout_below="@+id/etNewPassword"
android:layout_alignLeft="@+id/etNewPassword"
android:layout_alignStart="@+id/etNewPassword"
android:layout_alignRight="@+id/etNewPassword"
android:layout_alignEnd="@+id/etNewPassword"
android:hint="Enter Email" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Register"
android:id="@+id/btnNewRegister"
android:layout_below="@+id/etNewEmail"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Register.java:
package com.example.odev1v2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Register extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
final EditText userName = (EditText) findViewById(R.id.etNewName);
final EditText password = (EditText) findViewById(R.id.etNewPassword);
final EditText email = (EditText) findViewById(R.id.etNewEmail);
Button btnRegister = (Button) findViewById(R.id.btnNewRegister);
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = getSharedPreferences("MYPREFS",MODE_PRIVATE);
String newUser = userName.getText().toString();
String newPassword = password.getText().toString();
String newEmail = email.getText().toString();
SharedPreferences.Editor editor = preferences.edit();
editor.putString(newUser,newUser);
editor.commit();
editor.putString(newPassword, newPassword);
editor.commit();
editor.putString(newUser + newPassword + "data", newUser + "\n" + newEmail);
editor.commit();
Toast.makeText(getApplicationContext(), "SUCCESS.", Toast.LENGTH_LONG).show();
Intent register2Main = new Intent(Register.this, MainActivity.class);
startActivity(register2Main);
}
});
}
}
Bro,SharedPreferences仅将用户信息保存在手机上,如果要存储所有用户的数据,则需要像Firebase或SQLite这样的数据库。