将字体大小从 SharedPreferences 检索到其他 activity
Retrieving font size from SharedPreferences to other activity
我正在尝试从其他 activity 的共享首选项中检索字体大小。我已经添加了 getPreferences 方法,但它不起作用。请向我解释我喜欢知识。
按照代码,我成功地使用搜索栏更改了文本大小,并将其保存到共享首选项,但是,在尝试检索其他 activity 上的字体大小时,它不起作用。
这是我的第一个 activity java
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.MenuItem;
import android.widget.SeekBar;
import android.widget.TextView;
import com.google.android.material.navigation.NavigationView;
public class fontsize extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
//textsize
int textSize = 30;
//textView
TextView textViewFont, textViewSize;
//SharedPreferences
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
//variablesmenudrawer
DrawerLayout drawerLayout;
NavigationView navigationView;
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fontsize);
sharedPreferences = getSharedPreferences("fontsize", MODE_PRIVATE);
editor = sharedPreferences.edit();
int progress = sharedPreferences.getInt("progress", 0);
//definingtextview
textViewFont = findViewById(R.id.textViewFont);
textViewSize = findViewById(R.id.textViewSize);
//seekbar
SeekBar seekBar = findViewById(R.id.seekbar);
seekBar.setProgress(progress);
textViewFont.setTextSize(textSize+seekBar.getProgress()); // size 30sp
textViewSize.setText(seekBar.getProgress() + "/" + seekBar.getMax()); // 0/30
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progressNew = 0;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
textSize = textSize + (progress - progressNew);
progressNew = progress;
textViewFont.setTextSize(textSize);
editor.putInt("progress", progress);
editor.apply();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
textViewSize.setText(seekBar.getProgress() + "/" + seekBar.getMax()); // 0/30
}
});
//definingmenudrawer
drawerLayout = findViewById(R.id.drawer_layout4);
navigationView = findViewById(R.id.nav_view4);
toolbar = findViewById(R.id.toolbar4);
//toolbar
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
//toolbar.setNavigationIcon(R.drawable.ic_toolbar);
toolbar.setTitle("");
toolbar.setSubtitle("");
//toolbar.setLogo(R.drawable.ic_toolbar);
toolbar.setNavigationIcon(R.drawable.ic_baseline_dehaze_24);
//navdrawermenu
navigationView.bringToFront();
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
navigationView.setNavigationItemSelectedListener(this);
navigationView.setCheckedItem(R.id.nav_home);
}
@Override
public void onBackPressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
}
else {
super.onBackPressed();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.nav_home:
Intent intent = new Intent(fontsize.this, home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
case R.id.nav_fontsize:
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
}
和我的第二个 activity java
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.Display;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import com.google.android.material.navigation.NavigationView;
public class duatawassul extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
TextView textView;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
//variablesmenudrawer
DrawerLayout drawerLayout;
NavigationView navigationView;
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_duatawassul);
sharedPreferences = getSharedPreferences("fontsize", MODE_PRIVATE);
textView = findViewById(R.id.duatawassultext);
//definingmenudrawer
drawerLayout = findViewById(R.id.drawer_layout1);
navigationView = findViewById(R.id.nav_view1);
toolbar = findViewById(R.id.toolbar1);
//toolbar
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
//toolbar.setNavigationIcon(R.drawable.ic_toolbar);
toolbar.setTitle("");
toolbar.setSubtitle("");
//toolbar.setLogo(R.drawable.ic_toolbar);
toolbar.setNavigationIcon(R.drawable.ic_baseline_dehaze_24);
//navdrawermenu
navigationView.bringToFront();
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
navigationView.setNavigationItemSelectedListener(this);
navigationView.setCheckedItem(R.id.nav_home);
}
@Override
public void onBackPressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
}
else {
super.onBackPressed();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.nav_home:
Intent intent = new Intent(duatawassul.this, home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
case R.id.nav_fontsize:
Intent intent1 = new Intent(duatawassul.this, fontsize.class);
startActivity(intent1);
finish();
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
}
如果你想在你的应用程序中使用共享首选项,那么你必须首先像下面那样将值添加到共享首选项中,请记住你可以将它作为一个字符串和一个整数,这取决于你你正在使用
SharedPreferences.Editor editor = context.getSharedPreferences("fontsize", MODE_PRIVATE).edit();
editor.putInt("fontsizeis", 14);
editor.apply();
将值添加到共享首选项后,您必须获取该值。你可以从任何你想要的地方获得你可以使用它的价值。
SharedPreferences sharePreferences= getSharedPreferences("fontsize", MODE_PRIVATE);
if(sharePreferences.contains("fontsizeis")){
int fontsizeis= sharePreferences.getInt("fontsizeis", 0);
if(fontsizeis != 0){
Toast.makeText(context, "you find your desired value here", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "desired value not found some thing issue", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(context, "Share preferences does not contain this key value pair", Toast.LENGTH_SHORT).show();
}
这些条件用于避免空点执行
在第二个 activity 的 on create 方法中添加您的原始代码中似乎缺少的以下内容
prefs = getSharedPreferences("fontsize", MODE_PRIVATE);
//this line is nowhere found in your second activity
int progress=prefs.getInt("progress",0);
我正在尝试从其他 activity 的共享首选项中检索字体大小。我已经添加了 getPreferences 方法,但它不起作用。请向我解释我喜欢知识。
按照代码,我成功地使用搜索栏更改了文本大小,并将其保存到共享首选项,但是,在尝试检索其他 activity 上的字体大小时,它不起作用。
这是我的第一个 activity java
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.MenuItem;
import android.widget.SeekBar;
import android.widget.TextView;
import com.google.android.material.navigation.NavigationView;
public class fontsize extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
//textsize
int textSize = 30;
//textView
TextView textViewFont, textViewSize;
//SharedPreferences
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
//variablesmenudrawer
DrawerLayout drawerLayout;
NavigationView navigationView;
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fontsize);
sharedPreferences = getSharedPreferences("fontsize", MODE_PRIVATE);
editor = sharedPreferences.edit();
int progress = sharedPreferences.getInt("progress", 0);
//definingtextview
textViewFont = findViewById(R.id.textViewFont);
textViewSize = findViewById(R.id.textViewSize);
//seekbar
SeekBar seekBar = findViewById(R.id.seekbar);
seekBar.setProgress(progress);
textViewFont.setTextSize(textSize+seekBar.getProgress()); // size 30sp
textViewSize.setText(seekBar.getProgress() + "/" + seekBar.getMax()); // 0/30
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progressNew = 0;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
textSize = textSize + (progress - progressNew);
progressNew = progress;
textViewFont.setTextSize(textSize);
editor.putInt("progress", progress);
editor.apply();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
textViewSize.setText(seekBar.getProgress() + "/" + seekBar.getMax()); // 0/30
}
});
//definingmenudrawer
drawerLayout = findViewById(R.id.drawer_layout4);
navigationView = findViewById(R.id.nav_view4);
toolbar = findViewById(R.id.toolbar4);
//toolbar
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
//toolbar.setNavigationIcon(R.drawable.ic_toolbar);
toolbar.setTitle("");
toolbar.setSubtitle("");
//toolbar.setLogo(R.drawable.ic_toolbar);
toolbar.setNavigationIcon(R.drawable.ic_baseline_dehaze_24);
//navdrawermenu
navigationView.bringToFront();
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
navigationView.setNavigationItemSelectedListener(this);
navigationView.setCheckedItem(R.id.nav_home);
}
@Override
public void onBackPressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
}
else {
super.onBackPressed();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.nav_home:
Intent intent = new Intent(fontsize.this, home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
case R.id.nav_fontsize:
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
}
和我的第二个 activity java
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.Display;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import com.google.android.material.navigation.NavigationView;
public class duatawassul extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
TextView textView;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
//variablesmenudrawer
DrawerLayout drawerLayout;
NavigationView navigationView;
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_duatawassul);
sharedPreferences = getSharedPreferences("fontsize", MODE_PRIVATE);
textView = findViewById(R.id.duatawassultext);
//definingmenudrawer
drawerLayout = findViewById(R.id.drawer_layout1);
navigationView = findViewById(R.id.nav_view1);
toolbar = findViewById(R.id.toolbar1);
//toolbar
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
//toolbar.setNavigationIcon(R.drawable.ic_toolbar);
toolbar.setTitle("");
toolbar.setSubtitle("");
//toolbar.setLogo(R.drawable.ic_toolbar);
toolbar.setNavigationIcon(R.drawable.ic_baseline_dehaze_24);
//navdrawermenu
navigationView.bringToFront();
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
navigationView.setNavigationItemSelectedListener(this);
navigationView.setCheckedItem(R.id.nav_home);
}
@Override
public void onBackPressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
}
else {
super.onBackPressed();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.nav_home:
Intent intent = new Intent(duatawassul.this, home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
case R.id.nav_fontsize:
Intent intent1 = new Intent(duatawassul.this, fontsize.class);
startActivity(intent1);
finish();
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
}
如果你想在你的应用程序中使用共享首选项,那么你必须首先像下面那样将值添加到共享首选项中,请记住你可以将它作为一个字符串和一个整数,这取决于你你正在使用
SharedPreferences.Editor editor = context.getSharedPreferences("fontsize", MODE_PRIVATE).edit();
editor.putInt("fontsizeis", 14);
editor.apply();
将值添加到共享首选项后,您必须获取该值。你可以从任何你想要的地方获得你可以使用它的价值。
SharedPreferences sharePreferences= getSharedPreferences("fontsize", MODE_PRIVATE);
if(sharePreferences.contains("fontsizeis")){
int fontsizeis= sharePreferences.getInt("fontsizeis", 0);
if(fontsizeis != 0){
Toast.makeText(context, "you find your desired value here", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "desired value not found some thing issue", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(context, "Share preferences does not contain this key value pair", Toast.LENGTH_SHORT).show();
}
这些条件用于避免空点执行
在第二个 activity 的 on create 方法中添加您的原始代码中似乎缺少的以下内容
prefs = getSharedPreferences("fontsize", MODE_PRIVATE);
//this line is nowhere found in your second activity
int progress=prefs.getInt("progress",0);