gpt4 book ai didi

java - 在按钮上构建变量来触发监听器

转载 作者:行者123 更新时间:2023-12-02 10:57:19 25 4
gpt4 key购买 nike

我在处理应用程序中的变量类型时感到很头疼。我尝试根据 XML 布局中定义的按钮名称,在循环中增加 var 并将其传递给监听器。我想从“jeton1”开始到“jeton2”、“jeton3”......,但无法在我的代码中做到这一点(出现错误),变量没有指向按钮 存储在 XML 中,并且在调用 buttons 监听器时不会显示。我用定义的数组进行了测试,但结果失败了。下面的测试代码仅在一个按钮上进行。如果您有帮助,我们将不胜感激。

这是我的代码XML 布局:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:rowCount="20"
android:columnCount="9">

<Button
android:id="@+id/jeton1"
android:layout_column="0"
android:layout_row="0"
android:text="@string/boutona"
android:layout_height="88dp"
android:layout_width="88dp"
android:textSize="40sp"
android:backgroundTint="#eeceac"
android:textStyle="bold" />

主要Java:

public class MainActivity extends AppCompatActivity {

int i;
String jeton = "";

@SuppressLint("ClickableViewAccessibility")
@Override

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// Main loop

for (i = 1; i < 2; i++) {

jeton = "jeton" + i; // Should throw "jeton1", "jeton2".....
final Button jetonnew;
jetonnew = (Button) findViewById(R.id.jeton); // Error 'cannot resolve symbol

// jetonnew = (Button)findViewById(R.id.jeton+i);
// Step 4 Listener

jetonnew.setOnTouchListener(
new View.OnTouchListener() {

@Override
public boolean onTouch(View view, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_UP:
jetonnew.getBackground().setAlpha(0); // Crash app
jetonnew.setTextColor(Color.parseColor("#2aa17b"));
break;
}
return true;
}

});
}
}

}

非常感谢您的回复和建议。

最佳答案

如果您有固定数量的按钮,则可以存储整数数组

  int[] ids = {R.id.button1, R.id.button2, ...};

但是,如果您想动态添加按钮,则应该尝试以编程方式创建它们

Button newButton = new Button(this);

或者您可以创建一些自定义布局并对其进行扩充

inflate(this, R.layout.customLayout, null);

请记住,R.id.someId 返回整数而不是字符串,因此您无法附加到它。由于同样的原因,在 id 之后添加字符串也不起作用。

关于java - 在按钮上构建变量来触发监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51626404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com