Java 如何将SharedReference带入同一活动的新功能中?(安卓工作室)
我正在使用SharedReferences为一个活动创建设置,该设置将应用于其他活动。我已经在OnCreate中创建了SharedReferences,但是我需要在按下按钮时调用的第二个函数中设置它们。目前,如果我把SharedReferences放在除OnCreate之外的任何地方,应用程序在启动时就会不断崩溃 问题是我似乎无法将SharedReferences携带到openNextPage函数中,因为openNextPage中提到它时都会出现一个错误,即: 无法解析符号SharedReference 那么,我如何将编辑器带到这个函数中呢Java 如何将SharedReference带入同一活动的新功能中?(安卓工作室),java,android,Java,Android,我正在使用SharedReferences为一个活动创建设置,该设置将应用于其他活动。我已经在OnCreate中创建了SharedReferences,但是我需要在按下按钮时调用的第二个函数中设置它们。目前,如果我把SharedReferences放在除OnCreate之外的任何地方,应用程序在启动时就会不断崩溃 问题是我似乎无法将SharedReferences携带到openNextPage函数中,因为openNextPage中提到它时都会出现一个错误,即: 无法解析符号SharedRefer
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome_screen);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Button nextBtn = findViewById(R.id.confSetBtn);
nextBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openNextPage();
}
});
}
public void openNextPage(){
SharedPreferences.Editor editor = sharedPreferences.edit();
if(checkBox1.isChecked()){
editor.putBoolean("value1", true);
}
if(checkBox2.isChecked()){
editor.putBoolean("value2", true);
}
editor.apply();
boolean none = sharedPreferences.getBoolean("value1", false);
if(none){
finish();
}
else{
Intent intent = new Intent(welcomeScreen.this, newSettingsActivity.class);
startActivity(intent);
}
}
你可以这样试试,我已经编辑了你的代码。我已经在你的类中将此声明为属性
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome_screen);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Button nextBtn = findViewById(R.id.confSetBtn);
nextBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openNextPage();
}
});
}
public void openNextPage(){
SharedPreferences.Editor editor = sharedPreferences.edit();
if(checkBox1.isChecked()){
editor.putBoolean("value1", true);
}
if(checkBox2.isChecked()){
editor.putBoolean("value2", true);
}
editor.apply();
boolean none = sharedPreferences.getBoolean("value1", false);
if(none){
finish();
}
else{
Intent intent = new Intent(welcomeScreen.this, newSettingsActivity.class);
startActivity(intent);
}
}
要跨应用程序访问变量,请将其声明为:
public static SharedPreferences object;
通过此链接了解如何在应用程序中使用共享首选项。
干杯 将SharedReferences的实例作为参数传递,如下所示
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome_screen);
// update 1
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Button nextBtn = findViewById(R.id.confSetBtn);
nextBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// update 2
openNextPage(sharedPreferences);
}
});
}
// update 3
public void openNextPage(SharedPreferences sharedPreferences){
SharedPreferences.Editor editor = sharedPreferences.edit();
if(checkBox1.isChecked()){
editor.putBoolean("value1", true);
}
if(checkBox2.isChecked()){
editor.putBoolean("value2", true);
}
editor.apply();
boolean none = sharedPreferences.getBoolean("value1", false);
if(none){
finish();
}
else{
Intent intent = new Intent(welcomeScreen.this, newSettingsActivity.class);
startActivity(intent);
}
}
我认为您可以将SharedPreferences声明为这个字段class@HumzaMalik我该怎么做?对android研究来说还是个新手你需要先学习java。。。您可以将此变量声明为字段,并在onCreate方法中初始化。。。。。。。。。。如果你想在另一个方法中使用,你也可以将SharedReferences作为引用传递给该方法。这解决了值没有传递给openNextPage的问题,但应用程序在启动时仍会崩溃。知道为什么吗?@Sam这可能是你的应用程序代码中的错误。。。回顾一下你到底想做什么,然后付诸实施