如何在 Android 中保存开关按钮状态?
在 Android 中,Switch 是一种按钮,允许用户在两个操作或实例之间切换。通常,Switch 用于在可以调用任何操作或功能的两个选项之间进行选择。在本文中,我们将了解如何在 android 中保存 Switch Button 的状态。
我们将在本文中构建什么?
这是我们将在本文中构建的示例视频。请注意,我们将使用Java语言来制作这个项目。
分步实施
第 1 步:创建一个新项目
- 打开一个新项目。
- 我们将使用Java语言开发 Empty Activity。保持所有其他选项不变。
- 在您方便的时候命名应用程序。
- 将有两个名为 activity_main.xml 和 MainActivity 的默认文件。Java
如果您不知道如何在 Android Studio 中创建新项目,可以参考如何在 Android Studio 中创建/启动新项目?
步骤 2. 处理 XML 文件
导航到 app > res > layout > activity_main.xml 并将以下代码添加到该文件。下面是 activity_main.xml 文件的代码。
XML
XML
Java
package com.example.savestateofswitch;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SwitchCompat;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
// Initialize variable
SwitchCompat switchCompat;
Button btNext,btExit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Assign variable
switchCompat=findViewById(R.id.switch_compat);
btNext=findViewById(R.id.bt_next);
btExit=findViewById(R.id.bt_exit);
// Save switch state in shared preferences
SharedPreferences sharedPreferences=getSharedPreferences("save",MODE_PRIVATE);
switchCompat.setChecked(sharedPreferences.getBoolean("value",true));
switchCompat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (switchCompat.isChecked())
{
// When switch checked
SharedPreferences.Editor editor=getSharedPreferences("save",MODE_PRIVATE).edit();
editor.putBoolean("value",true);
editor.apply();
switchCompat.setChecked(true);
}
else
{
// When switch unchecked
SharedPreferences.Editor editor=getSharedPreferences("save",MODE_PRIVATE).edit();
editor.putBoolean("value",false);
editor.apply();
switchCompat.setChecked(false);
}
}
});
btNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Go to next activity
Intent intent=new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent);
}
});
btExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Close the app
MainActivity.this.finishAffinity();
}
});
}
}
Java
package com.example.savestateofswitch;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity2 extends AppCompatActivity {
// Initialize variable
Button btBack;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
// Assign variable
btBack=findViewById(R.id.bt_back);
btBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Go back
Intent intent=new Intent(MainActivity2.this,MainActivity.class);
startActivity(intent);
}
});
}
}
导航到 app > 右键单击 < new < activity < empty activity 并将其命名为 MainActivity2。在 activity_main2.xml 文件中使用以下代码 -
XML
步骤 3. 处理Java文件
导航到 MainActivity。 Java文件并在其中使用以下代码。代码中添加了注释以便更好地理解。
Java
package com.example.savestateofswitch;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SwitchCompat;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
// Initialize variable
SwitchCompat switchCompat;
Button btNext,btExit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Assign variable
switchCompat=findViewById(R.id.switch_compat);
btNext=findViewById(R.id.bt_next);
btExit=findViewById(R.id.bt_exit);
// Save switch state in shared preferences
SharedPreferences sharedPreferences=getSharedPreferences("save",MODE_PRIVATE);
switchCompat.setChecked(sharedPreferences.getBoolean("value",true));
switchCompat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (switchCompat.isChecked())
{
// When switch checked
SharedPreferences.Editor editor=getSharedPreferences("save",MODE_PRIVATE).edit();
editor.putBoolean("value",true);
editor.apply();
switchCompat.setChecked(true);
}
else
{
// When switch unchecked
SharedPreferences.Editor editor=getSharedPreferences("save",MODE_PRIVATE).edit();
editor.putBoolean("value",false);
editor.apply();
switchCompat.setChecked(false);
}
}
});
btNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Go to next activity
Intent intent=new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent);
}
});
btExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Close the app
MainActivity.this.finishAffinity();
}
});
}
}
导航到 MainActivity2。 Java文件并在其中使用以下代码。代码中添加了注释以便更好地理解。
Java
package com.example.savestateofswitch;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity2 extends AppCompatActivity {
// Initialize variable
Button btBack;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
// Assign variable
btBack=findViewById(R.id.bt_back);
btBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Go back
Intent intent=new Intent(MainActivity2.this,MainActivity.class);
startActivity(intent);
}
});
}
}
这是我们应用程序的最终输出。
输出: