【发布时间】:2020-10-04 12:49:34
【问题描述】:
所以我正在制作一个安卓应用程序。我已经设法创建了一个登录和注册页面(两者都有效,数据存储在 MySQL 数据库中)。
接下来我要做的是,当用户登录时,他/她的用户名将显示在主页上的 TextView 中(一个不同的活动,由片段组成。所以要清楚,MainActivity 由 4 个片段组成,当用户登录时,他会导航到 HomeFragment)。
我是 Java 和一般应用程序开发的新手,因此我们将不胜感激! 所以我想要完成的是将数据库中的用户名存储在一个键或变量(?)中,并将主页片段上的 TextView 设置为此用户名。 下面是 Login 和 Homefragment 脚本。
Login.java
package com.example.parrealityapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import android.content.SharedPreferences;
import com.google.android.material.textfield.TextInputEditText;
import com.vishnusivadas.advanced_httpurlconnection.PutData;
public class LogIn extends AppCompatActivity {
TextInputEditText textInputEditTextUsername, textInputEditTextPassword;
Button btnlogin;
ProgressBar progressBar;
TextView textViewSignUp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_log_in);
textInputEditTextUsername = findViewById(R.id.usernameLogin);
textInputEditTextPassword = findViewById(R.id.passwordLogin);
btnlogin = findViewById(R.id.btnlogin);
textViewSignUp = findViewById(R.id.signUpTxt);
progressBar = findViewById(R.id.progress);
textViewSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
Intent intent = new Intent(getApplicationContext(), SignUp.class);
startActivity(intent);
finish();
}
});
btnlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String username, password;
username = String.valueOf(textInputEditTextUsername.getText());
password = String.valueOf(textInputEditTextPassword.getText());
if (!username.equals("") && !password.equals("")) {
progressBar.setVisibility(View.VISIBLE);
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
String[] field = new String[2];
field[0] = "username";
field[1] = "password";
String[] data = new String[2];
data[0] = username;
data[1] = password;
PutData putData = new PutData("http://192.168.75.129/loginregister/login.php", "POST", field, data);
if (putData.startPut()) {
if (putData.onComplete()) {
progressBar.setVisibility(View.GONE);
String result = putData.getResult();
if (result.equals("Login Success")) {
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
finish();
} else {
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
}
}
}
}
});
}
else {
Toast.makeText(getApplicationContext(), "Vul alle velden in.", Toast.LENGTH_SHORT).show();
}
}
});
}
}
fragment_home.XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".ui.home.HomeFragment">
<TextView
android:id="@+id/txtName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="132dp"
android:layout_marginEnd="250dp"
android:textSize="45sp"
android:text="@string/dashboard"
android:fontFamily="@font/roboto_black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
【问题讨论】: