我有一个应用程序在我的手机(华为Mate 10专业版)上工作正常,但我的平板电脑(三星Galaxy Tab S2)有问题。我以前发过一个关于一个问题而不是另一个问题的不同问题,但这个问题完全是分开的。
我使用首选项屏幕来保存一些设置。其中一个设置(唯一ID)仅显示,但可以通过单击进行复制,否则只能由应用程序本身处理。一切都在我的手机上工作,但代码的某些部分似乎无法在我的平板电脑上工作(那里的值是空的)。由于代码相同,因此必须在设备之间以不同方式处理。我不确定,但它可能是背景吗?
要遵循的几个代码片段。
从我的PrefFregment,适用于两个设备:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.app_settings);
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
getPreferenceScreen().findPreference("UID").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Context context = preference.getContext();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String uid = prefs.getString("UID", "");
uid = uid.trim();
ClipboardManager clipboardManager = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("UID",uid);
clipboardManager.setPrimaryClip(clip);
Toast.makeText(context,R.string.UIDtoast, Toast.LENGTH_LONG).show();
return true;
}
});
}
我的PrefFragment的另一个片段可以在我的手机上使用但不适用于平板电脑:
private void updatePreference(Preference preference) {
preference.setSummary(PreferenceManager.getDefaultSharedPreferences(preference.getContext()).getString(preference.getKey(),""));
}
最后一个片段,它来自我的主要活动。它适用于我的手机,但平板电脑上的uid是空的:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String uid = prefs.getString("UID", "");
uid = uid.trim();
我解决了这个问题。关于潜在的问题我一直都错了。上下文工作得很好。问题在于我在较早的时候已将有问题的偏好从editTextPreference更改为仅偏好,因此其文本无法进行编辑。我不得不通过编辑器输入uid值。一切顺利。其中一些有用的原因是之前的值仍然存在于更改之前的首选项中。当我重新安装整个应用程序时突然显示所有值都是空的,我注意到了这一点。我仍然不知道为什么设备之间存在差异。但现在问题本身至少得到了解决。