我已经手动创建了一个偏好设置活动,其中复选框数据将被发送到不同的活动。当我发送它时,它是正确的。但是当我收到它时,我需要知道它是真还是假,我总是得到假。
下面是我的代码:
@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。
1条答案
按热度按时间ha5z0ras1#
您的接收代码错误。当您通过Intent发送数据时,没有任何错误,但当您尝试接收时,您从SharedPreferences获取数据
所以要访问数据而不是这个
字符串
应该是这个
型
重写接收代码
型
你混合了SharedPreferences和Intents,看起来你在代码中迷失了方向。确保你阅读了android文档,它会有很大帮助。https://developer.android.com/guide/components/intents-filters.html
编辑回复您的评论
型
查看Android文档中的SharedPreferences
https://developer.android.com/training/data-storage/shared-preferences.html的