# Was ist genau Xlint



## Panda9296 (21. Jun 2020)

Hi Leute,
ich habe seit gestern daran gesessen, Objekte irgendwie dauerhaft zu speichern und jetzt hatte es wohl geklappt. Ich habe nur irgendwas mit einem Xlint verstellt. Das Problem ist wenn ich auf den button Regristrieren der ersten Aktivity drücke hat es mich (bevor dieser Fehler auftauchte) auf die nächste activity weitergeleitet. Jetzt schließt die App plötzlich udn ich bekomme folgende Meldung:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: de.miguel.frozzenlist.frozzenbetaa, PID: 14692
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.miguel.frozzenlist.frozzenbetaa/de.miguel.frozzenlist.frozzenbetaa.Register}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3272)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3500)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2049)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7523)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference
        at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:188)
        at de.miguel.frozzenlist.frozzenbetaa.Register.<init>(Register.java:17)
        at java.lang.Class.newInstance(Native Method)
        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
        at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:41)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1253)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3260)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3500) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2049) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7523) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941) 
I/Process: Sending signal. PID: 14692 SIG: 9




Es muss irgendwas mit diesem init oder XLIND zu tun haben. Wie kann ich das den wieder bereinigen 

Ich schicke trotzdem mal den code der betreffenden Klassen 


```
package de.miguel.frozzenlist.frozzenbetaa;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity implements View.OnClickListener {

    Button btnRegister;
    Button btnSignIn;
    @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);
        btnRegister.setOnClickListener(this);

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

    }


}
```


```
<?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"
    android:background="@drawable/images"
    android:visibility="visible"
    tools:context=".MainActivity">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraintLayout2"
        android:layout_width="419dp"
        android:layout_height="623dp"
        android:layout_marginStart="9dp"
        android:layout_marginLeft="9dp"
        android:layout_marginTop="12dp"
        android:layout_marginBottom="12dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1.0">

        <Button
            android:id="@+id/bntRegister"
            android:layout_width="327dp"
            android:layout_height="77dp"
            android:layout_marginStart="34dp"
            android:layout_marginLeft="34dp"
            android:layout_marginEnd="40dp"
            android:layout_marginRight="40dp"
            android:layout_marginBottom="140dp"
            android:text="@string/registrieren"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent" />

        <Button
            android:id="@+id/bntSignIn"
            android:layout_width="327dp"
            android:layout_height="77dp"
            android:layout_marginEnd="56dp"
            android:layout_marginRight="56dp"
            android:layout_marginBottom="16dp"
            android:text="@string/anmelden"
            app:layout_constraintBottom_toTopOf="@+id/bntRegister"
            app:layout_constraintEnd_toEndOf="parent" />

        <LinearLayout
            android:id="@+id/linearLayout3"
            android:layout_width="365dp"
            android:layout_height="181dp"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="100dp"
            android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp"
            android:orientation="vertical"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <EditText
                android:id="@+id/editTextTextEmailAddress"
                android:layout_width="368dp"
                android:layout_height="82dp"
                android:layout_marginTop="5dp"
                android:autofillHints=""
                android:background="@android:drawable/edit_text"
                android:ems="10"
                android:hint="@string/hint_mail"
                android:inputType="textEmailAddress" />

            <EditText
                android:id="@+id/editTextTextPassword"
                android:layout_width="369dp"
                android:layout_height="86dp"
                android:layout_marginTop="5dp"
                android:autofillHints=""
                android:background="@android:drawable/edit_text"
                android:ems="10"
                android:hint="@string/hint_passwort"
                android:inputType="textPassword" />
        </LinearLayout>

    </androidx.constraintlayout.widget.ConstraintLayout>

    <TextView
        android:id="@+id/logheadline"
        android:layout_width="241dp"
        android:layout_height="47dp"
        android:text="@string/einloggen"
        android:textColor="#0F100F"
        android:textSize="36sp"
        android:textStyle="bold"
        tools:layout_editor_absoluteX="24dp"
        tools:layout_editor_absoluteY="38dp" />

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraintLayout3"
        android:layout_width="392dp"
        android:layout_height="86dp"
        tools:layout_editor_absoluteX="11dp"
        tools:layout_editor_absoluteY="8dp">

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.constraintlayout.widget.ConstraintLayout>
```


<androidx.constraintlayout.widget.ConstraintLayout wird fehlerhaft ohne gescheite Lösung angezeigt warum auch immer


```
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= this.getSharedPreferences("User.txt",0);
    SharedPreferences.Editor editor=sharedPreferences.edit();
    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);
    }

    public void Register(View view) {


        //decliation
        String input;
        String inputE;
        String inputP;
        String inputControlP;
        Counter counter = null;



        //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());


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


        inputID=counter.getId();
        user.setUserID(inputID);
        userData= user.toString();

        inputAnswer.setText("Regristration erfolgreich!");

    }

    @Override
    public void onClick(View view) {
        editor.putString("inputiD",userData);
        editor.commit();
        Intent intent= new Intent(this,Regiser.class);
    }
}
```


```
<androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraintLayout"
        android:layout_width="372dp"
        android:layout_height="691dp"
        android:layout_marginEnd="20dp"
        android:layout_marginRight="20dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.4">

        <Button
            android:id="@+id/btnRegistry"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginBottom="32dp"
            android:text="@string/regristrieren"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/btnCanellation"
            app:layout_constraintTop_toBottomOf="@+id/bntControlPasswort" />

        <Button
            android:id="@+id/btnCanellation"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginEnd="32dp"
            android:layout_marginRight="32dp"
            android:onClick="Register"
            android:text="@string/abbruch"
            app:layout_constraintBottom_toBottomOf="@+id/btnRegistry"
            app:layout_constraintEnd_toStartOf="@+id/btnRegistry"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@+id/btnRegistry" />

        <EditText
            android:id="@+id/bntInputName"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="27dp"
            android:layout_marginLeft="27dp"
            android:layout_marginTop="98dp"
            android:layout_marginEnd="27dp"
            android:layout_marginRight="27dp"
            android:layout_marginBottom="10dp"
            android:ems="10"
            android:hint="@string/name"
            android:importantForAutofill="no"
            android:inputType="textPersonName"
            app:layout_constraintBottom_toTopOf="@+id/bntInputEmail"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <EditText
            android:id="@+id/bntInputEmail"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="27dp"
            android:layout_marginLeft="27dp"
            android:layout_marginEnd="27dp"
            android:layout_marginRight="27dp"
            android:layout_marginBottom="10dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="@string/hint_mail"
            android:inputType="textEmailAddress"
            app:layout_constraintBottom_toTopOf="@+id/bntsetPasswort"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/bntInputName" />

        <EditText
            android:id="@+id/bntsetPasswort"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="26dp"
            android:layout_marginLeft="26dp"
            android:layout_marginEnd="26dp"
            android:layout_marginRight="26dp"
            android:layout_marginBottom="9dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="@string/hint_passwort"
            android:inputType="textPassword"
            app:layout_constraintBottom_toTopOf="@+id/bntControlPasswort"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/bntInputEmail" />

        <EditText
            android:id="@+id/bntControlPasswort"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="26dp"
            android:layout_marginLeft="26dp"
            android:layout_marginEnd="26dp"
            android:layout_marginRight="26dp"
            android:layout_marginBottom="259dp"
            android:ems="10"
            android:hint="@string/hint_passwort"
            android:importantForAutofill="no"
            android:inputType="textPassword"
            app:layout_constraintBottom_toTopOf="@+id/btnRegistry"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/bntsetPasswort" />

        <TextView
            android:id="@+id/btnAnswer"
            android:layout_width="224dp"
            android:layout_height="0dp"
            android:layout_marginTop="384dp"
            android:layout_marginBottom="179dp"
            android:textSize="18sp"
            android:visibility="visible"
            app:layout_constraintBottom_toTopOf="@+id/btnRegistry"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            tools:visibility="visible" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
```
Hier war alles cool soweit.

Und ich denke nicht, dass es euch hilft aber zur Übersicht die Userklasse:

```
package de.miguel.frozzenlist.frozzenbetaa;

import java.io.File;

public class User {

    private static 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 "#" + userID + "#" + userName + "#" + passwort + "#" + email
                + "#";
    }
}
```


----------



## mihe7 (21. Jun 2020)

Panda9296 hat gesagt.:


> SharedPreferences sharedPreferences= this.getSharedPreferences("User.txt",0);


Das geht so nicht, weil zum Zeitpunkt der Initialisierung von sharedPreferences der Kontext noch nicht festgelegt und somit null ist.

Du kannst die Deklaration lassen

```
SharedPreferences sharedPreferences;
```
und in onCreate die Zuweisung erledigen.


----------



## Panda9296 (21. Jun 2020)

mihe7 hat gesagt.:


> Das geht so nicht, weil zum Zeitpunkt der Initialisierung von sharedPreferences der Kontext noch nicht festgelegt und somit null ist.
> 
> Du kannst die Deklaration lassen
> 
> ...


Hat funktioniert danke ^^ tut mir leid


----------



## mihe7 (21. Jun 2020)

Unter Android funktioniert alles ein wenig anders als auf dem Desktop. Der Activity (und Fragment) Lifecycle muss in jedem Fall berücksichtigt werden. Außerdem gibt es viele weitere Fallstricke, die im Zusammenhang damit stehen und darauf zurückzuführen sind, dass die mobilen Geräte schwach auf der Brust sind.


----------



## Panda9296 (21. Jun 2020)

mihe7 hat gesagt.:


> Unter Android funktioniert alles ein wenig anders als auf dem Desktop. Der Activity (und Fragment) Lifecycle muss in jedem Fall berücksichtigt werden. Außerdem gibt es viele weitere Fallstricke, die im Zusammenhang damit stehen und darauf zurückzuführen sind, dass die mobilen Geräte schwach auf der Brust sind.


Was muss ich dabei beim abfangen beachten?


----------



## mihe7 (21. Jun 2020)

Bei welchem Abfangen?


----------

