Achtung Anfänger: Loginprogrammierung

  • Antworten:1
Panda
  • Forum-Beiträge: 1

24.06.2020, 08:55:40 via Website

Hi Leute ich freue mich im Rahmen meines Projektes, dieses Forum zu nutzen und hoffentlich auch, anderen zu helfen wenn es mal so weit ist. Danke für die Aufnahme.

Ich habe die Grundlagen von Java erlernt und habe ein Androidprojekt, da ich im Rahmen meiner Umschulung ein Praktikum habe , dass den praktischen Part dieser Ausbildung ausmacht. Im Rahmen des Praktikums bin ich an ein Unternehmen gekommen, welches mit Android arbeitet.

Ich finde Android, im Gegensatz zur Desktopprogrammierung doch echt verwirrend. Ich hoffe ihr könnt mir also helfen und bitte erklärt es genau, da ich wiegesagt nur die Grundlagen kenne. Es geht um einen Loggin, der sowohl beim Regristrieren Daten in einem String speichert und beim Login soll dieser abgerufen werden. So wie ich das sehe, kann ich bereits speichern mit der Klasse SharedPreferences. Naja das Problem ist, dass beim Laden etwas null angezeigt ist und ich arbeite seit einer Woche dran und der Pc ist auch kurz davor an die Wand zu fliegen :D. Also hoffe ich dass ihr helfen könnt.

package de.miguel.frozzenlist.frozzenbetaa;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.SharedPreferencesCompat;

import android.annotation.SuppressLint;
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.TextView;

public class Register extends AppCompatActivity implements View.OnClickListener {

SharedPreferences sharedPreferences;

Button regristryFinish;



int inputID;
User user =new User();
String userData;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);
    regristryFinish=(Button)findViewById(R.id.btnRegistry);
    regristryFinish.setOnClickListener(this);

}

@Override
public void onClick(View view) {


    //decliation
    String input;
    String inputE;
    String inputP;
    String inputControlP;
    Counter counter= new Counter();



    //source
    EditText inputName= (EditText)findViewById(R.id.bntInputName);
    EditText inputEmail=(EditText)findViewById(R.id.bntInputEmail);
    EditText setPasswort=(EditText)findViewById(R.id.bntsetPasswort);
    EditText setControlPasswort=(EditText)findViewById(R.id.bntControlPasswort);
    TextView inputAnswer=(TextView) findViewById(R.id.btnAnswer);




    //set to User
    input= (inputName.getText().toString());
    inputE= (inputEmail.getText().toString());
    inputP= (setPasswort.getText().toString());
    inputControlP=(setControlPasswort.getText().toString());


   this.user.setUserName(input);
   this.user.setEmail(inputE);
    if(input.equals(inputControlP)){
        user.setPasswort(inputP);
    }
    else {
        inputAnswer.setText("Passwörter stimmen nicht überein");
    }


    inputID=counter.getId();
    this.user.setUserID(inputID);
    userData= this.user.toString();
    sharedPreferences= this.getSharedPreferences("userID",0);
    SharedPreferences.Editor editor=sharedPreferences.edit();
        editor.putString("inputID",userData);
        editor.commit();
        if (editor.commit()){
        inputAnswer.setText("Regristration erfolgreich!");

        Intent intent= new Intent(this,MainActivity.class);
        startActivity(intent);
    }
        else{
            inputAnswer.setText("Regristration nicht erfolgreich!");
        }



}

}
//Login

package de.miguel.frozzenlist.frozzenbetaa;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import java.util.Arrays;

import static android.app.PendingIntent.getActivity;

public class MainActivity extends Activity implements View.OnClickListener {

Button btnRegister;
Button btnSignIn;
SharedPreferences sharedPreferences;
String userData;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnRegister= (Button)findViewById(R.id.bntRegister);
    btnRegister.setOnClickListener(this);
    btnSignIn= (Button)findViewById(R.id.bntSignIn);

    // sign in condition
    btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            EditText inputEmail= (EditText)findViewById(R.id.bntViewEmail);
            EditText inputPasswort= (EditText)findViewById(R.id.btnViewPasswort);
            // Shared Preferencs

            sharedPreferences= MainActivity.this.getSharedPreferences
                                           ("userID",0);
            userData=sharedPreferences.getString("inputID","passwort");// hier




            String email = inputEmail.getText().toString();
            String passwort= inputPasswort.getText().toString();


            if(email.isEmpty()){
                inputEmail.setError("Bitte Email eingeben");
                inputEmail.requestFocus();
            }
            else if(passwort.isEmpty()){
                inputPasswort.setError("Bitte geben Sie ein Passwort ein");
                inputPasswort.requestFocus();
            }
            else if(email.isEmpty()&&passwort.isEmpty()) {
                inputPasswort.setError("Email und Passwort müssen vorhanden sein.");
                inputEmail.requestFocus();
                inputPasswort.requestFocus();
            }
            //test

            String userAccount[]=userData.split("#");
            for(int i=0;i<userAccount.length;i++){
            System.out.println(userAccount[i]);}

                if (!userAccount[2].equalsIgnoreCase(email)&&!userAccount[3].equalsIgnoreCase(passwort)){ //Attantion
                   Intent intent = new Intent(MainActivity.this,
                           FreezerManagment.class);
                   startActivity(intent);
               }
                else{
                    System.out.println("fail");
                }

            }

    });

}
 //register button
@Override
public void onClick(View view) {
    Intent intent = new Intent(this,Register.class);
    startActivity(intent);

}

}

//User
package de.miguel.frozzenlist.frozzenbetaa;

import java.io.File;

public class User {

private  int userID;
private String userName;
private String passwort;
private String email;


public User() {
    this.userID = userID;
    this.userName = userName;
    this.passwort=passwort;
    this.email=email;
}


public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getPasswort() {
    return passwort;
}
public void setPasswort(String passwort) {
    this.passwort=passwort;
}
public String getEmail(){
    return email;
}
public void setEmail(String inputEmail){
    this.email=inputEmail;
}
public void changePasswort(String input)
{
    this.passwort= input;
}

public int getUserID(){
    return userID;
}
public void setUserID(int input){
    this.userID=input;
}
@Override
public String toString() {
    return "#" + getUserID() + "#" + getUserName() + "#" + getEmail() + "#" + getPasswort()
            + "#";

}
}

Ich bin so durcheinander deshalb^^. Dieser User soll später weitere Elemente dazu bekommen die er sich zuteilt es geht um schubladen ^^. Ich weiß nicht was ich falsch mache den sobald ich die Prüfung in der Main richtig prüfe(indem ich die negierung wegmache) klappt es nicht obwohl eigentlich diese Prüfung true sein müsste.

Kommentieren
Jokel
  • Forum-Beiträge: 1.530

24.06.2020, 11:28:08 via Website

Hallo
Bevor du den PC an die Wand haust versuche doch erst mal eine gültige Perf zu bekommen.
Oder wie man eine neue richtig anlegt.

Die default Pref :
sharedPreferences=PreferenceManager.getDefaultSheredPreferencees(MainActivity.this);

Dein this in der onClick Methode ist falsch. Überlege wo in einer Callback Methode was onclick ja ist das this hinzeigt. setze die Variable "sharedPreferences" in der onCreate nicht im Listner.

PS beim lesen in der zweiten Klasse machst du es richtig in der ersten nicht beim schreiben nicht.

— geändert am 24.06.2020, 11:41:17

Hilfreich?
Pascal P.Panda
Kommentieren