2016-05-28 4 views
0

は、すべてがOKです:私のコードで文字列リソースを抽出するには?私はこのようなパラメータとして文字列を追加すると

mPages[0] = new Page(
       R.drawable.page0, 
       "On your return trip from studying Saturn's rings, you hear a distress signal that seems to be coming" + 
         " from the surface of Mars. It's strange because there hasn't been a colony there in years. " + 
         "Even stranger, it's calling you by name: \"Help me, %1$s, you're my only hope.\"", 
       new Choice("Stop and investigate", 1), 
       new Choice("Continue home to earth", 2)); 

しかし、私はこのような文字列リソースを抽出しようとすると、エラーにあり

mPages[0] = new Page(
       R.drawable.page0, 
       .getString(R.string.story_page0), 
       new Choice("Stop and investigate", 1), 
       new Choice("Continue home to earth", 2)); 

だから何をすべき私がやります?

+0

あなたString.xmlファイルに「停止および調査」と「地に家を続ける」などのすべての文字列を使用すると、エラーが発生した正確に何を説明できることを確認してください? – PiKos

+0

tyr 'getResources()。getString(R.string.story_page0);' – Mohit

+0

「page0」の後に ')'が表示されます – Rubit

答えて

0

お試しください:

mPages[0] = new Page(
      R.drawable.page0, 
      string.valueOf(R.string.story_page0), 
      new Choice("Stop and investigate", 1), 
      new Choice("Continue home to earth", 2)); 

やアドバイスを

+0

'.getResources()。getString(R.string.story_page0)、'?を意味します。 '.'がなければ、getResources()メソッドを作成する必要があります。 – Rubit

+0

'string.valueOf(R.string.story_page0)'を使用しようとする –

+0

シンプルだけど魅力的です。どうもありがとうございました。 – Rubit

0

;.getString(R.string.story_page0)後の論理積を削除するには、あなたが直接getStringを呼び出すことはできません.ITは

mPages[0] = new Page(
      R.drawable.page0, 
      getApplicationContext().getResources().getString(R.string.story_page0), //--here 
      new Choice("Stop and investigate", 1), 
      new Choice("Continue home to earth", 2)); 
+0

申し訳ありませんが、実際には ";"の代わりに ";"があります。あなたの言ったように私のコードでも、エラーはまだそこにあります。 – Rubit

+0

'new Page()'コンストラクタのパラメータは何ですか? – Mohit

+0

@モートあなたはすでに彼/彼女のコードから推測することができます! 'Choice'があるクラスのサブクラスでない限り、'(int、String、Choice、Choice) 'をとります。それは4つの 'オブジェクト'を取るこ​​とはほとんどありません。 – Sweeper

0

あるべき,を追加します。

最初にResourcesオブジェクトを取得し、そのオブジェクトにgetStringを呼び出す必要があります。

Resourcesオブジェクトを取得するには、Contextが必要です。コードがActivityまたはContextのサブクラスに配置されている場合は、thisを使用できます。今のところ、私はあなたがいると思います。

てみましょう最初の呼び出しによってリソースを取得:

Resources res = getResources(); 

をそして、我々は、文字列を取得するためにgetStringを呼び出します。

String s = res.getString(); 

その後、あなたは自分のPageまたは何を作成します。

mPages[0] = new Page(
       R.drawable.page0, 
       s, 
       new Choice("Stop and investigate", 1), 
       new Choice("Continue home to earth", 2)); 
+0

私は同じことを考えて、私は "直接getStringを呼び出すことはできません"と私の問題だと信じています。しかし、私はページ1,2,3,4,5、などを持っていると私はすべての単一のページのリソースオブジェクトを作成する必要があります。文字列リソースを使用する代わりに、元の文字列をコピーして貼り付けてください。 – Rubit

+0

@Rubitアプリケーションをローカライズするには、文字列リソースを使用する必要があります。あなたのアプリケーションをローカライズしたくない場合は、そうしないでも問題ありません。 – Sweeper

関連する問題