3

Andrioidの設定システムをLibGDXの設定システムと組み合わせて使用​​しようとしています。どちらもSharedPreferencesをバックエンドとして使用しているため、連携できるはずですが、LibGDXの設定でデータを読み込もうとすると、データが返されません。

私のAndroidのpreferences.xmlファイル(短いことはわかっていますが、後でもっと多くなります:P):

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <EditTextPreference 
        android:key="framerate"
        android:title="Set Framerate"
        android:enabled="true"
        android:persistent="true"
        android:defaultValue="25" />
</PreferenceScreen>

これが私のPreferenceActivityです:

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;

public class WallpaperSettings extends PreferenceActivity {

    @SuppressLint("NewApi")
    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT < 11) {
            addPreferencesFromResource(R.xml.preferences);
        } else {
            getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
        }

    }

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    public static class MyPreferenceFragment extends PreferenceFragment
    {
        @Override
        public void onCreate(final Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
        }
    }
}

のサブクラスから呼び出す場合はcom.badlogic.gdx.Game

Preferences pref = Gdx.app.getPreferences("preferences");
pref.getInteger("framerate");

内のキーの数prefは0です。

誰かがこれがどのように修正されるかについての手がかりを持っていますか?

4

1 に答える 1

3

http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=6365#p32981のおかげで、問題を解決することができました。

注意点として、このコードはAndroid2.xと3.0以降の両方で機能します。

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;

public class WallpaperSettings extends PreferenceActivity {

    @SuppressLint("NewApi")
    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT < 11) {
            addPreferencesFromResource(R.xml.preferences);
        } else {
            getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
        }

    }

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    public static class MyPreferenceFragment extends PreferenceFragment
    {
        @Override
        public void onCreate(final Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
            getPreferenceManager().setSharedPreferencesName("preferences");
            getPreferenceManager().setSharedPreferencesMode(0);
        }
    }
}
于 2013-01-13T18:15:10.467 に答える