2017-01-12 3 views
-5

ハードコードなしで、各ボタンにsetTextを使用しないでこれを行うにはどうすればよいのですか?関数を使用してどのようにしますか? 「OK」(+ veボタン)をクリックするたびに、ダイアログボックスが表示されます。アクティビティの10個のボタンすべてで、テキストを変更して配列の一部の要素に設定します。関数を使ってすべてのボタンのテキストを変更する方法(ハードコーディングなし)?

+1

:あなたは同じテキストをしたいが、テキストの他のいくつかの配列を持っていなかった場合、彼らが注文したところに

さらに、あなたは比較的その後、あなただけのような何かを行うことができ、ボタンを変更したいです不可能です。 – Spartan

+0

先ず、実際に試した帽子にいくつかのコードを示してください。次に、可能な解決策と言えるものを言葉で説明します。すべてのボタンを作成時に配列に格納します。ボタンのonclickイベントを作成します。このonclick関数では、ループ内の(またはストリームを使用して)配列の各ボタンのテキストを設定します。参照によって渡されるので、再度それらを保存する必要はありません。 –

+0

@PushpendraChoudhary彼は各ボタンに 'setText'を使わないで、つまり –

答えて

2

あなたはこれについて質問しています:(配列リストにそれらを入れて、私の例では、私はだけではなく、ポップアップの1つの以上のボタンを使用)

public class MainActivity extends AppCompatActivity { 

Button mButton1; 
Button mButton2; 
Button mButton3; 
Button mButton4; 

ArrayList<Button> mButtons; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mButton1 = (Button) findViewById(R.id.button1); 
    mButton2 = (Button) findViewById(R.id.button2); 
    mButton3 = (Button) findViewById(R.id.button3); 
    mButton4 = (Button) findViewById(R.id.button4); 

    mButtons = new ArrayList<>(); 
    mButtons.add(mButton1); 
    mButtons.add(mButton2); 
    mButtons.add(mButton3); 

    mButton4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      for(Button button : mButtons){ 
       button.setText("hello"); 
      } 
     } 
    }); 

} 

}

0

これは、あなたがそれらのすべてが同じテキストに変更したいことを想定しています。

残りの問題(配列など)に応じて、すべてのボタンを適切なデータ構造に保存します。次に、各ボタンのテキストを設定して配列を反復処理します。

for(Button b: buttons){ //Array named buttons 
    b.setText(textToSet); 
} 

これは、ボタンの配列を受け渡しして返すことによって、またはボタンの配列をフィールドとして持つことで可能です。 setTextなし

for(int i = 0; i < buttons.length; i++){ 
    buttons[i].setText(texts[i]); 
}