新的Android應用程序編程。邊做邊學,但有些東西看起來奇怪不透明。有一個簡單的應用程序與MainActivity
和菜單與設置選項。如何將defaultSharedPreferences與addPreferencesFromResource連接?
我希望能夠在一個地方設置我的版本號(應用程序build.gradle
文件)。我手動更改版本名稱和內部版本號(versionCode)永久增量。
def Properties versionProps = new Properties()
def versionPropsFile = file('version.properties')
if (versionPropsFile.exists())
versionProps.load(new FileInputStream(versionPropsFile))
def buildNum = (versionProps['BUILD_number'] ?: "0").toInteger() + 1
versionProps['BUILD_number'] = buildNum.toString()
versionProps.store(versionPropsFile.newWriter(), null)
defaultConfig {
applicationId "com.someCorp.someApp"
minSdkVersion 22
targetSdkVersion 25
versionCode buildNum
versionName "0.2.7"
}
在我的應用程序,我得到的versionCode
和versionName
和我分手後到主要,次要,和我的版本類釋放。
PackageInfo packageInfo = getPackageManager().getPackageInfo (getPackageName(), 0);
int versionBuild = packageInfo.versionCode;
String versionName = packageInfo.versionName;
myVersion = new Version (versionBuild, versionName);
myversion.toString()
產生
someApp版本0.2.7.267 \ nMajor版本0,次版本2,版本7,建立267
我這樣做,所以,即使是天真的用戶將能夠告訴當我得到不可避免的支持電話時,我確切知道他們使用的是哪個版本/發行版。
然後,我可以使用defaultSharedPreferences
保存此字符串並檢索它。
然而,當我使用做了設置/首選項菜單項,運用現代PreferenceFragment
方式如下推出的PreferenceActivity
子類的推薦方式...
public boolean onOptionsItemSelected (MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings_item:
Intent i = new Intent (this, someAppPreferenceActivity.class);
startActivityForResult (i, RESULT_SETTINGS);
break;
.
public class someAppPreferenceActivity extends PreferenceActivity {
public void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
getFragmentManager().beginTransaction().replace (android.R.id.content, new MyPreferenceFragment()).commit();
} // OnCreate (Bundle)
public static class MyPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate (final Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
addPreferencesFromResource (R.xml.settings);
} // onCreate (Bundle)
} // class MyPreferenceFragment
...設置視圖顯示
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
android:key="pref_version"
android:title="@string/pref_version"
android:summary="@string/pref_version_summ"
android:defaultValue="true" />
</PreferenceScreen>
和Strings.xm
升有
settings.xml
」 資源文件(自然)設置
這是一個假的字符串,意思是用實際值覆蓋。
我的問題:
我如何改變我保存在SharedPreferences
(隱藏)文件(無論是)出現在我的settings.xml
,使他們出現在設置有何看法?如果我可以直接保存到settings.xml
或設置視圖,我可以跳過SharedPreferences
步驟。
我已經做了很多搜索,但似乎沒有辦法將兩者連接起來。示例和教程解釋了兩種做事方式,但不解釋如何連接它們(獲取保存的偏好以顯示在「設置」菜單中)。
http://www.101apps.co.za/index.php/articles/preference-settings.html
HTTP://viralpatel.net/blogs/android-preferences-activity-example/
HTTPS://developer.android.com/reference/android/preference/PreferenceActivity.html
我無法找到訪問PreferencesFromResource
的方法,以便在將值添加到「設置」視圖中之前更改該值。從理論上講,我應該能夠遍歷片段並更改片段並將其顯示在視圖中,但我找不到方法來逐步瀏覽片段。 SharedPreferences
有一個可行的鍵值對系統,很好。
我找不到像PreferenceFragment.setValue (String key, String value)
或edit()
之類的東西。
例如,這個問題How to get a preference value in preference fragment有一個答案在片段內部得到SharedPreferences
,但並沒有真正回答關於如何將它們與「設置」視圖結合在一起的問題。我可以閱讀並查看已保存的SharedPreferences
值,但是如何將其粘貼到碎片的層次結構中或將其添加到「設置」視圖中?
感謝Charuka。 – Alan