2017-03-29 11 views
0

ボタンをクリックすると、内部のテキストが変更されます。私はちょうど正しくグーグルでいないよ場合、私は知らないのonClickは、文字列の配列ボタンの文字列 - 文字列の循環

<string-array name="RG_answers"> 
    <item>text 1</item><!--Of course this is example text--> 
    <item>text 2</item> 
    <item>text 3</item> 
</string-array> 

をループのために尽くすことを考えて、私のstrings.xmlの配列でこれを達成しようとしています、 または何。インサイド私onCreate()私のボタンが、それは私がそれを呼んだ名前を提供することによって、(その場合)のみ役に立ちますように、基本的な基本的な

mTrueButton = (Button) findViewById(R.id.true_button); 
     mTrueButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }); 

です。それは実現可能か実現可能なのか?私が見つけたことから誰もこのような質問をしていないのを見たことがあります。

+0

これは皮肉な感じです。あなたにもっと明確にするために私は何ができますか?それに応じてOPを編集します。 – bonzo

+0

各ボタンのテキストをクリックして、最後に到達したら配列の先頭に戻るようにしたいのですか? –

+0

はい、正しいです。したがって、ボタンのテキストを最初に起動するときに「テキスト1」と表示され、クリックされると「テキスト2」などに変更されます。これは、配列の最後に当たったときよりも「テキスト1」に戻ります。 – bonzo

答えて

1

文字列配列をループすることはできますか?

はい、ボタンのテキストをbutton.setText(text);に変更してください。説明した「ボタンテキスト」のリストを順番に表示できるように、グローバル変数としてカウンタを保持してください。

例:button.setText(array[index]);

0

次の3つのステップが必要です。このような

//1 Declare an index outside onClick: 
int currentIndex=0; 

//2- Read the answers: 
Resources res = getResources(); 
myStrings = res.getStringArray(R.array.RG_answers); 

//3- iterate thru them inside onClick: 
mTrueButton.setText(myStrings[(currentIndex++)%(myStrings.length)]); 
+0

onCreate()の中で宣言すると、「myStrings」宣言が「シンボルを解決できません」というエラーを投げているので、私は何かが欠けていると思います。私はonCreate()の外側で 'String [] myStrings;を宣言しましたが、構文エラーは表示されません。しかし、これにより、インスタンスがロードされると即座にクラッシュするようになります。 – bonzo

0

何かを。

private int count = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final String[] btnText = getResources().getStringArray(R.array.RG_answers); 
    mTrueButton = (Button) findViewById(R.id.true_button); 
    mTrueButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mTrueButton.setText(btnText[count]); 
      if (count < btnText.length - 1) { 
       count++; 
      } else { 
       count = 0; 
      } 
     } 
    }); 
} 
+0

私の友人は解散し、解決策を手に入れました。あなたの答えは、彼と私が 'mTrueButton.setText(RG_arr [i] .toString());'のルートをonClick()の中で終えると、私が働いていたものと非常に似ています。私はあなたの答えを私たちの答えと同じように働くのを見ることができるので、答えとしてあなたの印を付けるべきか、私のものを掲示するのかは明確ではありません。 – bonzo