【问题标题】:Using LibGDX with Android Preferences将 LibGDX 与 Android 首选项一起使用
【发布时间】:2012-12-27 09:40:06
【问题描述】:

我正在尝试将 Andrioid 的首选项系统与 LibGDX 的首选项系统结合使用。他们都使用 SharedPreferences 作为后端,所以我认为他们应该能够一起工作,但是当我尝试在 LibGDX 的首选项中加载数据时,我没有得到任何数据。

我的 Androidpreferences.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。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: java android sharedpreferences libgdx


    【解决方案1】:

    感谢http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=6365#p32981我能够解决问题。

    请注意,该代码适用于 Android 2.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);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多