Android - checkBox总是向不同的Activity发送true

kqlmhetl  于 2023-11-15  发布在  Android
关注(0)|答案(1)|浏览(144)

我已经手动创建了一个偏好设置活动,其中复选框数据将被发送到不同的活动。当我发送它时,它是正确的。但是当我收到它时,我需要知道它是真还是假,我总是得到假。
下面是我的代码:

@Override
    public void onBackPressed() {

        if(checkBox.isChecked())
        {
            String trueThumb_check = "checked_thumb";
            Intent i = new Intent(getBaseContext(), MainActivity.class);
            i.putExtra("trueThumbnail", trueThumb_check);
            Toast.makeText(Preferences.this, "check prefs", Toast.LENGTH_SHORT).show();
            startActivity(i);
            killAc();
        }
        else
        {
            String falseThumb_check = "not_check_thumb";
            Intent i = new Intent(getBaseContext(), MainActivity.class);
            i.putExtra("trueThumbnail", falseThumb_check);
            Toast.makeText(Preferences.this, "not check prefs", Toast.LENGTH_SHORT).show();
            startActivity(i);
            killAc();
        }

    }

字符串
并接受:

try {
            SharedPreferences thumb_check = this.getSharedPreferences(
              "ch4an.ytheloader", Context.MODE_PRIVATE);

            //To read preferences
            String thumb_thumb = thumb_check.getString("trueThumbnail", "checked_thumb");

            if (thumb_thumb.contains("checked_thumb")){
            Toast.makeText(MainActivity.this, "checkBox ativo", Toast.LENGTH_SHORT).show();
            }  if(thumb_thumb.contains("not_checked_thumb")) {
            Toast.makeText(MainActivity.this, "checkBox não ativo", Toast.LENGTH_SHORT).show();
            }

            SharedPreferences.Editor editor = thumb_check.edit();
            editor.apply();

        } catch (Throwable e) {
            Toast.makeText(MainActivity.this, "Null checkBox", Toast.LENGTH_SHORT).show();
            e.printStackTrace();

        }


我认为问题可能在这里:

String thumb_thumb = thumb_check.getString("trueThumbnail", "checked_thumb");


我总是得到一个**”checked_thumb”,但我不知道如何为两者都得到“thumb_thumb”**。我试过发送不同的 * 键 * 和 * 值 *(因为两者都在“trueThumbnail”键下),但我仍然只得到true。

ha5z0ras

ha5z0ras1#

您的接收代码错误。当您通过Intent发送数据时,没有任何错误,但当您尝试接收时,您从SharedPreferences获取数据
所以要访问数据而不是这个

SharedPreferences thumb_check = this.getSharedPreferences(
              "ch4an.ytheloader", Context.MODE_PRIVATE);

字符串
应该是这个

Intent thumb_check = getIntent();
String thumb_thumb = thumb_check.getStringExtra("trueThumbnail", "checked_thumb");


重写接收代码

try {
    // Get the intent passed through activities
    Intent thumb_check = getIntent();
    // Get the string in the extra
    String intent_Thumb = thumb_check.getStringExtra("trueThumbnail", "checked_thumb");

    // Get the shared preferences
    SharedPreferences prefs = this.getSharedPreferences(
                          "ch4an.ytheloader", Context.MODE_PRIVATE);
    
    //To read from preferences
        String pref_Thumb = prefs("trueThumbnail", "checked_thumb");
    
    // preform what ever you want
    
} catch (Throwable e) {
    Toast.makeText(MainActivity.this, "Null checkBox", Toast.LENGTH_SHORT).show();
         e.printStackTrace();
}


你混合了SharedPreferences和Intents,看起来你在代码中迷失了方向。确保你阅读了android文档,它会有很大帮助。https://developer.android.com/guide/components/intents-filters.html

编辑回复您的评论

SharedPreferences sharedPref = getSharedPreferences("ch4an.ytheloader", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("trueThumbnail", intent_Thumb);
// Or if you want to put a bool assuming that you have a
// variable called intent_Thumb_as_boolean as a boolean
editor.putBoolean("trueThumbnail", intent_Thumb_as_boolean);
editor.commit();


查看Android文档中的SharedPreferences
https://developer.android.com/training/data-storage/shared-preferences.html

相关问题