我是初学Android编程的人,经验很少,我会尝试提出正确的问题,但如果我的一些理解不是很划清,我会道歉。
我正在使用按钮0到9构建一个基本的计算器应用程序。用户可以使用它们将该特定数字输入到文本字段中。
我有相同的代码片段(如下)为所有0到9个按钮执行我的按钮操作。只是在哪里看到数字1它被替换为按钮相关的数字。
label.nostate.selected {
background-color: white;
color: white;
所以我正在编写一个相同代码的子程序,然后我可以调用相关按钮。
Button button1 = (Button) findViewById(R.id.button_calc_1);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String number_1 = ("1");
TextView Insert_Number_1 = (TextView ) findViewById(R.id.editTextoutput);
TextView Insert_Number_1_view = (TextView) findViewById(R.id.CurrentDisplay);
Insert_Number_1.append(number_1);
Insert_Number_1_view.append(number_1);
}
});
请记住这是一项正在进行的工作。
我的问题基本上是如何将变量数字按钮添加到button_calc_(此处插入数字按钮)
编辑:
好的,从第二段代码开始。我想在findViewById(R.id.button_calc_1)中使用numberbuttons变量。
所以在我脑海里,我想象这样。
public String numberbuttons(String value){
Button button1 = (Button) findViewById(R.id.button_calc_1);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String number_1 = ("1");
TextView Insert_Number_1 = (TextView ) findViewById(R.id.editTextoutput);
TextView Insert_Number_1_view = (TextView) findViewById(R.id.CurrentDisplay);
Insert_Number_1.append(number_1);
Insert_Number_1_view.append(number_1);
}
});
}
当我调用textview时也一样。我想象这样。
findViewById(R.id.button_calc_+(numberbuttons);
答案 0 :(得分:1)
findViewById()方法需要一个整数,而不是String,因此您不能只传入一个String,其中包含您尝试使用的按钮的名称。当您使用R.id.xxx时,您传递的是对资源的引用,实际上只是一个int。
为了达到你想要的效果,我建议使用某种类型的列表来存储按钮,然后循环浏览。请参阅下面的示例。
ArrayList<Button> buttons = new ArrayList<>();
buttons.add((Button) findViewById(R.id.button1)); //Do this for all the buttons.
for(Button b : buttons){
b.setText("1"); //Do whatever you need to each button in here.
}
如果您想使用某种方法管理所有按钮,也可以这样做!
changeButton((Button) findViewById(R.id.button1));
private void changeButton(Button b){
//Change the button
}
编辑:
如果我理解正确,请与您的问题更相关,为每个问题添加一个事件处理程序。
ArrayList<Button> buttons = new ArrayList<>();
buttons.add((Button) findViewById(R.id.button1)); //Do this for all the buttons.
for(int i = 0; i < buttons.size(); i++){
Button b = buttons.get(i);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String number = String.valueOf(i);
TextView Insert_Number_1 = (TextView ) findViewById(R.id.editTextoutput);
TextView Insert_Number_1_view = (TextView) findViewById(R.id.CurrentDisplay);
Insert_Number_1.append(number_1);
Insert_Number_1_view.append(number_1);
}
});
}