设计一个主Activity和一个子Activity。主Activity界面上有一个“登录”按钮和一个用于显示信息的TextView,单击“登录”按钮后打开一个新的Activity,新Activity上面有输入用户名、密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主Activity,如果用户名和密码正确,则主Activity上的TextView显示“某某用户已登录”,否则弹出一个消息对话框,显示“用户名或密码错误”。
时间: 2024-02-16 14:03:43 浏览: 69
用户登陆界面设计,包括用户名及密码的输入
5星 · 资源好评率100%
好的,让我们来实现这个功能。首先,我们需要在主Activity的布局文件中添加一个按钮和一个TextView,代码如下:
```xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<Button
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录"
android:layout_centerInParent="true"/>
<TextView
android:id="@+id/info_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/login_button"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"
android:text="请登录"/>
</RelativeLayout>
```
接下来,我们需要在主Activity中处理按钮的点击事件,打开子Activity,并等待子Activity返回结果。在子Activity中,用户输入的用户名和密码将会被返回给主Activity,并在那里进行验证。如果验证成功,则更新TextView的文本内容;如果验证失败,则显示一个消息对话框。
主Activity的代码如下:
```java
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_LOGIN = 1;
private TextView mInfoTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mInfoTextView = findViewById(R.id.info_textview);
Button loginButton = findViewById(R.id.login_button);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivityForResult(intent, REQUEST_LOGIN);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_LOGIN && resultCode == RESULT_OK && data != null) {
String username = data.getStringExtra(LoginActivity.EXTRA_USERNAME);
String password = data.getStringExtra(LoginActivity.EXTRA_PASSWORD);
if ("admin".equals(username) && "123456".equals(password)) {
mInfoTextView.setText(username + "已登录");
} else {
new AlertDialog.Builder(MainActivity.this)
.setTitle("登录失败")
.setMessage("用户名或密码错误")
.setPositiveButton("确定", null)
.show();
}
}
}
}
```
在这个代码中,我们使用了一个常量 REQUEST_LOGIN 来标识打开子Activity的请求。在按钮的点击事件中,我们使用 startActivityForResult() 方法来打开子Activity,并等待其返回结果。在 onActivityResult() 方法中,我们检查请求码和结果码是否匹配,以及是否有数据返回。如果有,则获取返回的用户名和密码,并进行验证。如果验证成功,则更新TextView的文本内容;如果验证失败,则显示一个消息对话框。
现在,让我们来编写子Activity的代码。它的布局文件包含了两个EditText和一个Button,用于输入用户名、密码和提交登录信息。在点击Button时,我们将用户名和密码封装成一个Intent,并使用 setResult() 方法返回给主Activity。如果用户在这个界面上按下了Back键,则不会返回任何数据。
子Activity的代码如下:
```java
public class LoginActivity extends AppCompatActivity {
public static final String EXTRA_USERNAME = "extra_username";
public static final String EXTRA_PASSWORD = "extra_password";
private EditText mUsernameEditText;
private EditText mPasswordEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mUsernameEditText = findViewById(R.id.username_edittext);
mPasswordEditText = findViewById(R.id.password_edittext);
Button loginButton = findViewById(R.id.login_button);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username = mUsernameEditText.getText().toString();
String password = mPasswordEditText.getText().toString();
Intent data = new Intent();
data.putExtra(EXTRA_USERNAME, username);
data.putExtra(EXTRA_PASSWORD, password);
setResult(RESULT_OK, data);
finish();
}
});
}
@Override
public void onBackPressed() {
setResult(RESULT_CANCELED);
super.onBackPressed();
}
}
```
在这个代码中,我们定义了两个常量 EXTRA_USERNAME 和 EXTRA_PASSWORD,用于传递用户名和密码。在 onCreate() 方法中,我们获取了两个EditText的引用,并设置了登录按钮的点击事件。在点击事件中,我们获取了用户名和密码,将它们封装成一个Intent,并使用 setResult() 方法返回给主Activity。在 onBackPressed() 方法中,我们设置了返回结果为 RESULT_CANCELED,以避免用户按下Back键时返回任何数据。
至此,我们已经完成了主Activity和子Activity之间的数据传递和验证。当用户在子Activity中输入正确的用户名和密码时,主Activity的TextView将会显示“admin已登录”。否则,将会弹出一个消息对话框,显示“用户名或密码错误”。
阅读全文