我正在尝试在我的应用程序中实现暗模式。我决定使用共享首选项来保存当前的暗模式状态。问题是,除了SettingsActivity之外,共享首选项总是返回所有活动的默认值。
我试过:
GetSharedReferences()
而不是getPreferences()
allowBackup
更改为清单为false我的manifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.george.socialmeme">
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="false"
android:icon="@drawable/app_logo"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@drawable/app_logo"
android:supportsRtl="true"
android:theme="@style/Theme.SocialMeme"
android:dataExtractionRules="@xml/data_extraction_rules">
<activity
android:name=".Activities.PostsOfTheMonthActivity"
android:exported="false" />
<activity
android:name=".Activities.UserProfileActivity"
android:exported="true" />
<activity
android:name=".Activities.FollowerInfoActivity"
android:exported="false" />
<activity
android:name=".Activities.NotificationsActivity"
android:exported="false" />
<activity
android:name=".Activities.PrivacyPolicyActivity"
android:exported="false" />
<activity
android:name=".Activities.WelcomeActivity"
android:exported="false" />
<activity
android:name=".Activities.AccountSettingsActivity"
android:exported="false" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-9627755439548346~7996414717" />
<activity
android:name=".Activities.SettingsActivity"
android:exported="false" />
<activity android:name=".Activities.SelectProfileImageActivity" />
<activity
android:name=".Activities.HomeActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:exported="true" />
<activity
android:name=".Activities.RegisterActivity"
android:exported="false" />
<activity
android:name=".Activities.LoginActivity"
android:exported="false" />
<activity
android:name=".Activities.SplashScreenActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".Services.FirebaseNotificationService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
我的家庭活动的一部分:
boolean isNightModeEnabled() {
SharedPreferences sharedPref = HomeActivity.this.getPreferences(MODE_PRIVATE);
return sharedPref.getBoolean("dark_mode", false);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
if (isNightModeEnabled()) {
// Using force apply because HomeActivity contains fragments
Resources.Theme theme = super.getTheme();
theme.applyStyle(R.style.AppTheme_Base_Night, true);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
}
}
我的设置活动:
public class SettingsActivity extends AppCompatActivity {
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
CustomIntent.customType(SettingsActivity.this, "right-to-left");
}
boolean isNightModeEnabled() {
SharedPreferences sharedPref = SettingsActivity.this.getPreferences(MODE_PRIVATE);
return sharedPref.getBoolean("dark_mode", false);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
if (isNightModeEnabled()) {
setTheme(R.style.AppTheme_Base_Night);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
AdView mAdView = findViewById(R.id.adView3);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();
DatabaseReference bugRef = FirebaseDatabase.getInstance().getReference("bugs");
DatabaseReference feedbackRef = FirebaseDatabase.getInstance().getReference("feedback");
ImageButton backBtn = findViewById(R.id.imageButton);
TextView username = findViewById(R.id.textView49);
CardView account_settings = findViewById(R.id.cardView2);
Button logout = findViewById(R.id.button);
CardView bugReport = findViewById(R.id.cardView3);
CardView feedback = findViewById(R.id.cardView5);
CardView privacyPolicy = findViewById(R.id.cardView6);
SwitchCompat nightModeSwitch = findViewById(R.id.switch1);
nightModeSwitch.setChecked(isNightModeEnabled());
nightModeSwitch.setOnClickListener(view -> {
SharedPreferences sharedPref = SettingsActivity.this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
if (isNightModeEnabled()) {
// Disable night mode
editor.putBoolean("dark_mode", false);
editor.apply();
Toast.makeText(this, "Night mode disabled", Toast.LENGTH_SHORT).show();
}else {
// Enable Night mode
editor.putBoolean("dark_mode", true);
editor.apply();
Toast.makeText(this, "Night mode enabled", Toast.LENGTH_SHORT).show();
}
finish();
Intent intent = new Intent(SettingsActivity.this, SplashScreenActivity.class);
startActivity(intent);
});
privacyPolicy.setOnClickListener(view -> {
startActivity(new Intent(SettingsActivity.this, PrivacyPolicyActivity.class));
CustomIntent.customType(SettingsActivity.this, "left-to-right");
});
feedback.setOnClickListener(view -> {
AlertDialog.Builder dialog = new AlertDialog.Builder(SettingsActivity.this)
.setTitle("Feedback");
final EditText feedback_et = new EditText(SettingsActivity.this);
feedback_et.setInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME);
feedback_et.setHint("Tell us your opinion");
dialog.setView(feedback_et);
dialog.setPositiveButton("Okay", (dialogInterface, i) -> {
if (!feedback_et.getText().toString().isEmpty()) {
feedbackRef.child(user.getUid()).child(feedback_et.getText().toString());
}
dialogInterface.dismiss();
Toast.makeText(SettingsActivity.this, "Feedback report succeed!", Toast.LENGTH_SHORT).show();
}).setNegativeButton("Cancel", (dialogInterface, i) -> {
dialogInterface.dismiss();
}).show();
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(550, FrameLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(50, 6, 30, 6);
feedback_et.setLayoutParams(params);
});
bugReport.setOnClickListener(view -> {
AlertDialog.Builder dialog = new AlertDialog.Builder(SettingsActivity.this)
.setTitle("Bug report");
final EditText bug_et = new EditText(SettingsActivity.this);
bug_et.setInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME);
bug_et.setHint("Please describe the issue");
dialog.setView(bug_et);
dialog.setPositiveButton("Okay", (dialogInterface, i) -> {
if (!bug_et.getText().toString().isEmpty()) {
bugRef.child(user.getUid()).child(bug_et.getText().toString());
}
dialogInterface.dismiss();
Toast.makeText(SettingsActivity.this, "Bug report succeed!", Toast.LENGTH_SHORT).show();
}).setNegativeButton("Cancel", (dialogInterface, i) -> {
dialogInterface.dismiss();
}).show();
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(550, FrameLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(50, 6, 30, 6);
bug_et.setLayoutParams(params);
});
logout.setOnClickListener(view -> {
new AlertDialog.Builder(SettingsActivity.this)
.setTitle("Are you sure?")
.setMessage("Are you sure you want to log out?")
.setPositiveButton("Yes", (dialogInterface, i) -> {
auth.signOut();
finish();
startActivity(new Intent(SettingsActivity.this, WelcomeActivity.class));
CustomIntent.customType(SettingsActivity.this, "fadein-to-fadeout");
}).setNegativeButton("No", (dialogInterface, i) -> {
dialogInterface.dismiss();
}).show();
});
username.setText(user.getDisplayName());
account_settings.setOnClickListener(v -> {
startActivity(new Intent(SettingsActivity.this, AccountSettingsActivity.class));
CustomIntent.customType(SettingsActivity.this, "left-to-right");
});
backBtn.setOnClickListener(v -> onBackPressed());
}
}
你可以简单地这么做
要获得共享的序言:
SharedPreferences s = getSharedPreferences("dark_mode" , MODE_PRIVATE);
boolean isNight = s.getBoolean("dark_mode" , false);
要编辑共享的优势:
s.edit().putBoolean("dark_mode" , /*true or false*/ true);
还要注意每个共享偏好中的键是相同的
我正在尝试在Spring中使用MessageSource注入文本消息。我编写的程序编译良好,但它总是打印出默认消息,而不是从. Properties文件中获取正确的值。我一点线索也没有。 下面是尝试注入文本的Circle类: 下面是bean配置文件的一部分: 我存储问候语和画图。圈入消息。属性文件,并编写了一个主类。但输出总是: 有人知道我的情况可能会出什么问题吗? 更新感谢您的建议。我正在调试,
问题内容: 遇到这个问题(有点烦人),我正在尝试查找集合中的所有记录,而不显示(或显示)特定字段(得分)。这只是一个示例,并不能反映我的实际代码,但是问题总是可以重现的。我要排除的字段非常大,我只是试图生成可用记录的菜单。 像这样的命令 始终返回每个字段,而不是触发mongodb中的排除/包含。我不需要担心什么,因为模板可以控制哪些数据呈现为html?仍然感觉无论如何数据都已传输到客户端。并显示在
好吧,这是一个两部分的问题,我试图最好地解释我的疑问: 代码很简单,用户不断输入成绩,程序会对其进行计数,一旦用户给出EOF条目,程序会在最后显示每个成绩的最终计数。 1) 当我运行代码时,程序会正确地跟踪我输入的每个等级的计数,但总是落在默认情况下,即使输入是正确的!为什么会这样? 2) 因此,我不完全确定“cin.get()”是如何工作的,但如果我是对的,它会接受用户输入的任何内容的第一个字符
问题内容: 我希望模仿允许用户指定“默认”返回值的内置函数(如)的行为。我最初的尝试是这样做 问题是,如果用户希望成为其返回值,则此函数将引发异常。第二次尝试: 这解决了上述问题,并允许用户指定任何任意值,但是带来了麻烦,因为用户必须始终在其函数调用中进行指定;他们不能只提供最后。同样,可以使用,但如果用户偏爱该语法,则会阻止用户使用。 结合并提供了可行的解决方案,但感觉这需要付出很多努力。它还可
问题内容: 我以前使用过媒体播放器,但从未遇到过此问题。每当我尝试使用MediaPlayer.create()时,该方法都会使我为null,并且无法播放声音。有什么我想念的吗? 我的sound.mp3在我的原始文件夹中,通过将声音拖到eclipse中的文件夹中,我将其放置在其中。请帮忙,因为我以前玩过声音,所以这真的困扰我:( 问题答案: 如果create() API由于某种原因失败,则返回nul
问题内容: 尽管是有效的类,但以下代码会打印。 文档说方法返回 由 aClassName 命名的类对象,或者如果当前没有加载该名称的类。如果 aClassName 为,则返回。 我也试图获得当前的viewcontroller已加载但仍然得到 可能是什么问题? 更新: 即使尝试这样做,我仍然可以 问题答案: 该函数 确实 适用于(纯和Objective-C派生的)swift类,但是仅当您使用全限定名