2015-07-09 49 views
0

我已經看到幾個例子,其中人們從java訪問如下所示的.xml文件。 android.R包的從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> 

我看到的使用要求保護的是在獲取LibGDX菜單中的字符串succesfull。但是,我一直跑到error: cannot find symbol variable leaderboard_id,leaderbord_id是我目前嘗試的唯一變量。

我已經嘗試清理我的項目沒有錯誤,但一旦再次建設我每次嘗試訪問它時都會收到上述錯誤。

我的strings.xml駐留在../android/res/values/,我試圖訪問它像getString(R.string.leaderboard_id)沒有成功。此外,我嘗試Sync project with gradle和不同的API和構建。

我使用官方的Google BaseGameUtils,它給出了bootstrap warning about classpath not being set,但我沒有看到任何問題。自從我發現這篇文章的帖子太舊以來,我開始懷疑這是可能的還是改變了。

這裏是我的完整代碼:

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(); 
    } 
} 
+0

'getString(R.string.leaderboard_id)without success'。你能證明這一點嗎? –

+0

@JaredBurrows我如何證明這一點?我有這個:'getString(R.string.leaderboard_id)''leaderboard_id'突出顯示爲紅色。當我運行它時,我得到'錯誤:(100,90)錯誤:無法找到符號變量leaderboard_id' – Madmenyo

+0

你嘗試過'gradlew clean assembleDebug'嗎? –

回答

3

看起來像你輸入了錯誤的R類。

import android.R; 

您需要R文件指向自己的資源,而不是Android的SDK中定義的資源。你需要的是(假設你的應用程序包名爲net.madmenyo.multiplayertest.android):

import net.madmenyo.multiplayertest.android.R; 
+0

謝謝,無處不在,但沒有發現任何指向我的方向。 – Madmenyo

+0

我得到「未使用的導入語句」警告,但我的構建成功。 – Madmenyo

0

如果您在Activity的時候,你可以這樣做: getApplicationContext().getResources().getString(R.string.leaderboeard_id)

Fragment,做到: getActivity().getResources().getString(R.string.leaderboard_id)

+0

我在'ActivityApp'中擴展的'AndroidApplication'。無論如何,使用前面的代碼給了我同樣的錯誤。在此期間我發佈了我的完整代碼。 – Madmenyo