安卓studio实现登录和注册,用户信息本地保存,用户名唯一。登录成功之后访问好友列表,好友列表的数据来自数据库。请给出完整代码
时间: 2024-02-06 15:10:44 浏览: 17
这里给出一个简单的示例代码,仅供参考。
首先是用户登录和注册的部分,我们使用 SharedPreferences 来保存一些用户信息:
```java
public class MainActivity extends AppCompatActivity {
private EditText etUsername, etPassword;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etUsername = (EditText) findViewById(R.id.et_username);
etPassword = (EditText) findViewById(R.id.et_password);
sp = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
}
// 注册按钮的点击事件
public void onRegister(View view) {
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
Toast.makeText(this, "用户名和密码不能为空", Toast.LENGTH_SHORT).show();
return;
}
// 判断用户名是否已经存在
if (sp.contains(username)) {
Toast.makeText(this, "该用户名已经被注册", Toast.LENGTH_SHORT).show();
return;
}
// 保存用户信息
SharedPreferences.Editor editor = sp.edit();
editor.putString(username, password);
editor.apply();
Toast.makeText(this, "注册成功", Toast.LENGTH_SHORT).show();
}
// 登录按钮的点击事件
public void onLogin(View view) {
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
Toast.makeText(this, "用户名和密码不能为空", Toast.LENGTH_SHORT).show();
return;
}
// 判断用户名和密码是否匹配
if (!sp.getString(username, "").equals(password)) {
Toast.makeText(this, "用户名或密码错误", Toast.LENGTH_SHORT).show();
return;
}
// 登录成功,跳转到好友列表页面
Intent intent = new Intent(this, FriendListActivity.class);
startActivity(intent);
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
}
}
```
在上面的代码中,我们使用了 SharedPreferences 来保存用户信息,其中键为用户名,值为密码。在注册时,先判断用户名是否已经存在,如果已经存在则提示用户该用户名已经被注册了;如果不存在,则将用户名和密码保存到 SharedPreferences 中。在登录时,先判断用户名和密码是否匹配,如果不匹配则提示用户用户名或密码错误;如果匹配,则跳转到好友列表页面。
接下来是好友列表的部分,我们使用 SQLite 数据库来保存好友列表:
```java
public class FriendListActivity extends AppCompatActivity {
private List<String> friendList;
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_friend_list);
ListView lvFriendList = (ListView) findViewById(R.id.lv_friend_list);
friendList = new ArrayList<>();
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, friendList);
lvFriendList.setAdapter(adapter);
// 从数据库中读取好友列表数据
SQLiteDatabase db = new DatabaseHelper(this).getReadableDatabase();
Cursor cursor = db.query("friend", new String[]{"name"}, null, null, null, null, null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
friendList.add(name);
}
cursor.close();
adapter.notifyDataSetChanged();
}
// 添加好友按钮的点击事件
public void onAddFriend(View view) {
EditText etFriendName = (EditText) findViewById(R.id.et_friend_name);
String name = etFriendName.getText().toString();
if (TextUtils.isEmpty(name)) {
Toast.makeText(this, "好友名不能为空", Toast.LENGTH_SHORT).show();
return;
}
// 判断好友名是否已经存在
if (friendList.contains(name)) {
Toast.makeText(this, "该好友已经存在", Toast.LENGTH_SHORT).show();
return;
}
// 将好友名保存到数据库中
SQLiteDatabase db = new DatabaseHelper(this).getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
db.insert("friend", null, values);
friendList.add(name);
adapter.notifyDataSetChanged();
Toast.makeText(this, "添加好友成功", Toast.LENGTH_SHORT).show();
}
}
```
在上面的代码中,我们使用了 SQLite 数据库来保存好友列表数据。在 onCreate 方法中,我们先从数据库中读取好友列表数据,然后将其显示到 ListView 中。在添加好友时,先判断好友名是否已经存在,如果已经存在则提示用户该好友已经存在了;如果不存在,则将好友名保存到数据库中,并更新 ListView。
最后是一个简单的 DatabaseHelper 类,用于创建数据库和表:
```java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "mydb.db";
private static final int DB_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE friend (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS friend");
onCreate(db);
}
}
```
在上面的代码中,我们创建了一个名为 friend 的表,该表只有两个字段,一个是自增长的主键,另一个是好友名。如果需要添加更多的字段,可以在 onCreate 方法中修改表结构。如果需要升级数据库,可以在 onUpgrade 方法中修改表结构或者删除表并重新创建。