当前位置: 首页 > 知识库问答 >
问题:

无法从SharedPreferences获取值

盛城
2023-03-14

嘿,这里有人能帮我吗?我想从user.java获取SharedPreferences,但总是得到以下错误:

2020-12-29 16:42:11.424 220 63-22063/com.example.BauwagenApp E/AndroidRuntime:致命异常:主进程:com.example.BauwagenApp,PID:22063 java.lang.RuntimeException:无法启动activity组件Info{com.example.BauwagenApp/com.example.BauwagenApp.ActivityUser}:java.lang.NullPoInterException:尝试在Android.App.ActivityThread.PerformLaunchActivity(ActivityThread.java:3449)上的null对象引用上调用虚拟方法“)在android.os.looper.loop(looper.java:223)在android.app.activitythread.main(activitythread.java:7656)在java.lang.reflect.Method.invoke(原生方法)在com.android.internal.os.runtimeinit$methodandargscaller.run(runtimeinit.java:592)在com.android.internal.os.zygoteinit.main(zygoteinit.java:947)

原因:java.lang.NullPoInterException:尝试在Android.Content.Context.Android.Context.GetApplicationContext(ContextWrapper.Java:122)处的Com.Example.BauwagenApp.User.(user.java:39)处的Com.Example.BauwagenApp.User.(user.java:39)处的Android.App.Activity.PerformCreate(Activity.java:8000)处的Android.Context.Android.Context.GetApplicationContext()对空对象引用html" target="_blank">调用虚拟方法“.ServerTransaction.TransactionExecutor.Execute(TransactionExecutor.java:95)在Android.app.ActivityThread$H.HandleMessage(ActivityThread.java:2066)在Android.os.Handler.DispatchMessage(ActivityThread.java:106)在Android.os.Looper.Loop(Looper.java:223)在Android.app.ActivityThread.Main(ActivityThread.java:7656)在java.lang.Reflect.Method.Invoke(本机方法)在PID:22063 SIG:9

这里是我的user.java,错误的原因是:

package com.example.bauwagenapp;

import android.content.SharedPreferences;
import androidx.appcompat.app.AppCompatActivity;

public class User extends AppCompatActivity {

    private String name;
    private int guthaben;
    private int getrunken;

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

    public void setGuthaben(int guthaben){
        this.guthaben = guthaben;
    }

    public int getGuthaben(){
        return guthaben;
    }

    public void setGetrunken(int getrunken){
        this.getrunken = getrunken;
    }

    public int getGetrunken(){
        return getrunken;
    }


    public User(String name){
        this.name = name;
        this.guthaben = getGuthabenFromPreference(this.name);
        this.getrunken = getGetrunkenFromPreference(this.name);
    }

    public int getGuthabenFromPreference(String name){
        SharedPreferences Guthaben_User = getApplicationContext().getSharedPreferences(name, 0);
        int Guthaben = Guthaben_User.getInt("Guthaben", 0);
        return Guthaben;
    }

    public int getGetrunkenFromPreference(String name){
        SharedPreferences Getrunken_User = getApplicationContext().getSharedPreferences(name, 0);
        int Getrunken = Getrunken_User.getInt("Getrunken", 0);
        return Getrunken;
    }
}

共有1个答案

何烨华
2023-03-14

公共int getGetrunkenFromPreference(字符串名称)

不能调用从activity扩展的类中的公共函数,因为不能使用new运算符实例化该activity。

 类似资料:
  • 我有一个以下格式的日期,我需要解析它,并转换成一个纪元时间。 关于我做错了什么有什么帮助吗?

  • 当我这样做的时候 如何解析datetime字符串,以便将其解释为始终来自时区“欧洲/柏林”?

  • 问题内容: 当我这样做时 我得到以下异常: 如何解析日期时间字符串,以便将其始终解释为来自“欧洲/柏林”时区? 问题答案: 问题在于,a 和a 之间存在差异。要创建一个,您需要一个区域偏移量。但是,a和a之间没有一对一的映射关系,因为它实际上取决于当前的夏时制时间。对于ZoneId像“欧洲/柏林”一样的商品,夏季有一个偏移量,而冬季有一个不同的偏移量。 在这种情况下,使用代替会更容易。在解析期间,

  • 我一直在尝试使用nativescript创建一个android应用程序。我正在使用fetch模块从服务器获取响应。当我试图从httpbin获得响应时。org/get,没关系。但当我试图从本地服务器获取响应时,网络请求失败。错误 发送到httpbin。组织/获取- 发送到本地主机:8000/api- 当我尝试从纯节点中的localhost:8000/api获取响应时。js通过请求模块。它工作得很好。

  • 问题内容: 我已经在几个线程中看到了答案,但对我却没有解决,而且由于我的问题偶尔发生,因此问这个问题是否有人有任何想法。 我正在使用jedis版本2.8.0,Spring Data Redis版本1.7.5。和redis服务器版本2.8.4用于我们的缓存应用程序。 我有多个缓存保存在redis中,并且从redis获得请求。我正在使用spring数据redis API保存和获取数据。 所有保存和获取

  • 我每5分钟运行一次批处理作业,我不希望其他节点运行同一个作业,因此我使用绝地锁将一个对象锁定5分钟。这样,如果另一个节点试图运行同一个作业,它们就不会得到锁。工作是在获得锁后开始的,当我试图从Redis读取它时,我得到以下异常情况: 这是我的密码 spring启动应用程序。属性文件 作业在开始时执行以下代码以获得锁 之后,redis仓库类试图读取特定模式的值... 这就是我在日志中看到的完全例外。