Ich verwende die statische Klasse, die Sie hier finden können, aber aus irgendeinem Grund, wenn ich die Klasse getEmail() {... Methode I erhalten Ausnahme:Java Android - private Konstruktor in einer statischen Klasse ruft nicht
java.lang.RuntimeException: Kann Aktivität ComponentInfo {com.techsolutions.appgrade/com.techsolutions.appgrade.View.RegisterActivity} starten: java.lang.NullPointerException: Versuch zum aufrufen Interface-Methode ‚boolean android .content.SharedPreferences.contains (java.lang.String) 'bei einem Nullobjekt-Verweis
Es sieht so aus, als ob der private Konstruktor keinen Anruf erhält ed.
Dies ist meine statische Klasse:
package com.techsolutions.appgrade.Logic;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import org.apache.commons.validator.routines.EmailValidator;
public final class DataController extends Application{
private static SharedPreferences sharedPref;
private static SharedPreferences.Editor editor;
private static Context context;
private static boolean isRegistered;
private static String PREF_NAME = "StudentSharedPref";
private static String KEY_Name = "name";
private static String KEY_Email = "email";
private static String KEY_PhoneNum = "phoneNum";
private static String KEY_Age = "age";
private static String KEY_Realm = "age";
public static DataController instance;
private DataController()
{
System.out.println("Been HERE");
sharedPref = context.getSharedPreferences(PREF_NAME, Activity.MODE_PRIVATE);
editor = sharedPref.edit();
context = getApplicationContext();
isRegistered = false;
}
public static void setName(String name)
{
editor.putString(KEY_Name, name);
editor.apply();
}
public static String getName(){
if(sharedPref.contains(KEY_Name))
{
return sharedPref.getString(KEY_Name, "");
}
return "";
}
public static boolean setEmail(String email)
{
if(!EmailValidator.getInstance().isValid(email))
return false;
editor.putString(KEY_Email, email);
editor.apply();
return true;
}
public static String getEmail(){
if(sharedPref.contains(KEY_Email))
{
return sharedPref.getString(KEY_Email, "");
}
return "";
}
public static boolean setPhonNum(String phoneNum)
{
if(String.valueOf(phoneNum).length() == 10)
return false;
editor.putString(KEY_PhoneNum, phoneNum);
editor.apply();
return true;
}
public static String getPhoneNum(){
if(sharedPref.contains(KEY_PhoneNum))
{
return sharedPref.getString(KEY_PhoneNum, "");
}
return "";
}
public static boolean setAge(int age)
{
if(age <= 0 || age>120)
return false;
editor.putInt(KEY_Age, age);
editor.apply();
return true;
}
public static String getAge(){
if(sharedPref.contains(KEY_Age))
{
return sharedPref.getString(KEY_Age, "");
}
return "";
}
public static void setRealm(String realm)
{
editor.putString(KEY_Realm, realm);
editor.apply();
}
public static String getRealm(){
if(sharedPref.contains(KEY_Realm))
{
return sharedPref.getString(KEY_Realm, "");
}
return "";
}
}
und das ist, wie ich die Methode von einer anderen Klasse genannt:
DataController.setEmail(email)
Im Beispiel wird keine statische Klasse angezeigt. –