将LibGDX与Android首选项一起使用 [英] Using LibGDX with Android Preferences

查看:310
本文介绍了将LibGDX与Android首选项一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to use Andrioid's preferences system in conjunction with LibGDX's preferences system. They both use SharedPreferences as a backend, so I figure they should be able to work together, but when I try to load the data in LibGDX's preferences, I don't get any data back.

我的Android preferences.xml文件(我知道它很简短,以后会有更多:P):

My Android preferences.xml file (I know it's short, it'll have much more later :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:

Here is my 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 。

任何人都知道如何解决这个问题?

Anyone have a clue as to how this might be fixed?

推荐答案

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

只是一个注释,代码适用于Android 2.x和3.0 +。

Just a note, the code works for both Android 2.x and 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);
        }
    }
}

这篇关于将LibGDX与Android首选项一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆