package my.investing.investingtestapp
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btnPlay.setOnClickListener {
// Handler code here.
val I = Intent(this, PlayActivity::class.java)
startActivity(I);
}
}
}
游戏活动中:
package my.company.example
import android.content.Context
import android.content.SharedPreferences
import android.content.SharedPreferences.Editor
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class PlayActivity : AppCompatActivity() {
val prefs: SharedPreferences? by lazy { this.getPreferences(Context.MODE_PRIVATE) }
val editor: Editor = prefs!!.edit()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_play2)
}
}
这也适用于:
val prefs = this.getPreferences(Context.MODE_PRIVATE)
具体来说是这样的:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String android.content.Context.getPackageName()' on a null object
reference at
android.content.ContextWrapper.getPackageName(ContextWrapper.java:149) at
android.app.Activity.getLocalClassName(Activity.java:6738) at
android.app.Activity.getPreferences(Activity.java:6782) at
my.company.example.PlayActivity$prefs$2.invoke(PlayActivity.kt:39) at
它崩溃是因为您试图对空上下文
调用GetPackageName()
,这是通过PlayActivity.kt
第39行的Preferences
对象引起的GetPreference()
调用而发生的。
在构造活动
时,会初始化这些成员函数,但此时活动
还没有上下文
--这种情况发生在生命周期的稍后阶段,在调用oncreate
时,它就已经准备好了。所以有些事情必须在以后初始化(lateinit
对于类似的事情很有用)
sharedPreferences.edit { putBoolean("key", value)
问题内容: 我在这个.java文件中有一个SharedPreference;在底部,您可以看到我将值保存到SharedPreferences GB_PREFERENCES_BENCH和GB_PREFERENCES_FLIES。如何在其他活动中使用这些值?请参阅第二个代码示例以了解如何使用它。 这是我要使用的方式;(特别是在on create方法中,将TextView的文本设置为SharePrefe
对于下面的代码,我正在尝试检索共享的首选项,我认为它保存正确,但当我回到登录屏幕时,所有的数据都消失了。我需要它留在我回到这个屏幕上。所以我在个人资料页面上输入姓名、年龄和id到三个单独的行中。然后按下save按钮,然后按下action Bar上的back转到前面的页面。当我回到个人资料页面时,我的信息应该还在那里,但它没有任何帮助?
非常感谢您的光临,我正在为学校开发一个应用程序,我遇到了另一个问题。该应用程序的主要思想是跟踪您的卡路里,我希望它能节省卡路里,所以当应用程序关闭时,它仍然会记住他们。我已经忙了一段时间了,现在尝试使用SavedPreferences,但我总是出现错误。我希望有人能帮我。 } 我可能做了很多明显的愚蠢的事情,但我真的弄不明白。 多谢!
更新崩溃日志:
我在我的多个项目中使用了共享首选项的代码,它正常工作,但现在当我在另一个项目中应用相同的代码时,它停止工作。以下是错误
当我发送FCM消息且应用程序处于后台时,我想清除共享首选项。在方法中,我正在调用一个方法来清除它们。 我得到以下错误: 未处理的异常:MissingPluginException(在channel plugins.flatter.io/shared_首选项上找不到方法getAll的实现)