如何更改所有按钮'使用函数的文本(没有硬编码)?

时间:2017-01-12 12:59:06

标签: java android

如何在没有硬编码的情况下执行此操作,并且不为每个按钮使用setText,如何使用函数执行此操作? 我有一个对话框,每当" OK"(+ ve按钮)被点击我想要Activity中的所有10个按钮来改变文本并将其设置为数组中的某个元素

2 个答案:

答案 0 :(得分:2)

我想你问的是:(把它们放在数组列表中,在我的例子中我只使用了一个按钮而不是弹出窗口)

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");
            }
        }
    });

}

}

答案 1 :(得分:0)

这假定您希望它们全部更改为相同的文本。

根据问题的其余部分(即数组)将所有按钮存储在适当的数据结构中。然后遍历数组设置每个按钮的文本。

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

您可以通过传递和返回按钮数组或将按钮数组作为字段来在函数中执行此操作。

此外,如果您不想要相同的文字,但是想要将按钮更改为相对的订单,那么您可以执行以下操作:

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