[英]Access xml strings from java
I have seen several examples where people access .xml files like below from java. 我已经看到了几个示例,其中的人们从Java访问如下所示的.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">YYYYYYYYY</string>
<string name="app_id">999999999999</string>
<string name="leaderboard_id">XXXXXXXXXXX</string>
</resources>
I have seen usage of android.R package claimed to be succesfull at fetching the strings within LibGDX setups. 我已经看到android.R软件包的用法声称可以成功获取LibGDX设置中的字符串。 However, I keep running into
error: cannot find symbol variable leaderboard_id
, leaderbord_id is the only variable I currently trying. 但是,我一直遇到
error: cannot find symbol variable leaderboard_id
,leaderbord_id是我当前尝试的唯一变量。
I have tried cleaning up my project without errors but once building again I get the above error for every time I try to access it. 我尝试清理我的项目时没有错误,但是一旦再次构建,每次尝试访问它时都会收到上述错误。
My strings.xml
resides in ../android/res/values/
and I am trying to access it like getString(R.string.leaderboard_id)
without success. 我的
strings.xml
驻留在../android/res/values/
并且我尝试像getString(R.string.leaderboard_id)
一样访问它,但未成功。 Furthermore I tried Sync project with gradle
and different API's and builds. 此外,我尝试了
Sync project with gradle
和其他API和版本进行Sync project with gradle
。
I am using the official Google BaseGameUtils which gives a bootstrap warning about classpath not being set
but I don't see any issues with that. 我正在使用官方的Google BaseGameUtils,它会
bootstrap warning about classpath not being set
的bootstrap warning about classpath not being set
但我看不到任何问题。 I'm at a point starting to doubt if this is possible or changed since the posts about this I found are old. 我开始怀疑这是否可能或已更改,因为我发现的相关信息很旧。
Here is my complete code: 这是我完整的代码:
AndroidLauncher.java AndroidLauncher.java
package net.madmenyo.multiplayertest.android;
import android.content.Intent;
import android.os.Bundle;
import android.R;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.google.android.gms.games.Games;
import com.google.example.games.basegameutils.GameHelper;
import net.madmenyo.multiplayertest.IGoogleServices;
import net.madmenyo.multiplayertest.MultiplayerTest;
public class AndroidLauncher extends AndroidApplication implements IGoogleServices {
private GameHelper _gameHelper;
private final static int REQUEST_CODE_UNUSED = 9002;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create game helper
_gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES);
_gameHelper.enableDebugLog(false);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new MultiplayerTest(this), config);
}
@Override
protected void onStart()
{
super.onStart();
_gameHelper.onStart(this);
}
@Override
protected void onStop()
{
super.onStop();
_gameHelper.onStop();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
_gameHelper.onActivityResult(requestCode, resultCode, data);
}
@Override
public void signIn() {
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
_gameHelper.beginUserInitiatedSignIn();
}
});
}
catch (Exception e)
{
Gdx.app.log("MainActivity", "Log in failed: " + e.getMessage());
}
}
@Override
public void signOut() {
try
{
runOnUiThread(new Runnable() {
@Override
public void run() {
_gameHelper.signOut();
}
});
}
catch (Exception e)
{
Gdx.app.log("MainActivity", "Log out failed: " + e.getMessage());
}
}
@Override
public void submitScore(long score) {
if (isSignedIn() == true)
{
Games.Leaderboards.submitScore(_gameHelper.getApiClient(), getString(R.string.leaderboard_id), score); //Error cannot find symbol variable leaderboard_id
getApplicationContext().getResources().getString(R.string.leaderboard_id); //Error
startActivityForResult(Games.Leaderboards.getLeaderboardIntent(_gameHelper.getApiClient(), getString(R.string.leaderboard_id)), REQUEST_CODE_UNUSED); //Error
}
else
{
}
}
@Override
public void showScores() {
if (isSignedIn() == true)
startActivityForResult(Games.Leaderboards.getLeaderboardIntent(_gameHelper.getApiClient(), getString(R.string.leaderboard_id)), REQUEST_CODE_UNUSED); //Error
else
{
}
}
@Override
public boolean isSignedIn() {
return _gameHelper.isSignedIn();
}
}
Looks like you've imported wrong R
class. 好像您导入了错误的
R
类。
import android.R;
You need the R
file pointing to your own resources, not the resources defined within Android SDK. 您需要
R
文件指向您自己的资源,而不是指向Android SDK中定义的资源。 What you need is (assuming that your application's package called net.madmenyo.multiplayertest.android
): 您需要的是(假设您的应用程序包名为
net.madmenyo.multiplayertest.android
):
import net.madmenyo.multiplayertest.android.R;
If you're in Activity
, you can do: getApplicationContext().getResources().getString(R.string.leaderboeard_id)
如果您处于
Activity
,则可以执行以下操作: getApplicationContext().getResources().getString(R.string.leaderboeard_id)
In Fragment
, do: getActivity().getResources().getString(R.string.leaderboard_id)
在
Fragment
,执行以下操作: getActivity().getResources().getString(R.string.leaderboard_id)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.