我想单击文本视图以通过 java 在 android 中递增我的按钮
I want to click a text view to increment my button through java in android
此代码在点击监听器下,也在创建方法下,当我点击 textView 或加载页面时,它停止 运行 并写入不幸的是,appName 已停止。
for (int i = 0 ; i < MAX_BUTTONS; i++){
Button button = (Button) getLayoutInflater().inflate(R.layout.button_layout,buttonsContainer,false);
button.setText("Test" + i);
button.setOnClickListener((View.OnClickListener) this);
buttonsContainer.addView(button);
if (i != MAX_BUTTONS - i){
buttonsContainer.addView(new Space(this),new ViewGroup.MarginLayoutParams(buttonsSpacing,buttonSize));
}
}
我认为这是因为您在 setOnClickListener 中进行了强制转换。如果您的 class 实现了侦听器,则只需使用 "this" 作为参数,则无需强制转换。另请注意,您正在通过循环调用 getLayoutInflater 创建不必要的对象垃圾。您需要做的就是在循环外调用一次,并使用它的引用。这样,您只创建一个,而不是创建 n+ 个对象。最后我看到你在打电话
if(i != MAX_BUTTONS - i)
你不是说
if(i != MAX_BUTTONS - 1)
看起来您可能需要在循环的每次迭代中创建一个新的 Button 对象,而不是扩充布局,例如
for (int i = 0 ; i < MAX_BUTTONS; i++){
Button button = new Button(this);
button.setText("Test" + i);
button.setOnClickListener((View.OnClickListener) this);
buttonsContainer.addView(button);
if (i != MAX_BUTTONS - i){
buttonsContainer.addView(new Space(this),new ViewGroup.MarginLayoutParams(buttonsSpacing,buttonSize));
}
}
由于您是以编程方式创建按钮,因此您可能需要检查 this 创建 LayoutParams 的答案。
编辑:我想提一下,如果您的 Activity 实现了 View.OnClickListener,我同意 Bryan Mill 对您的回答,您可以仅通过传递上下文来构造您的侦听器,例如,button.setOnClickListener(this),以及你可能打算写 if(i != MAX_BUTTONS - 1) 而不是 -i.
此代码在点击监听器下,也在创建方法下,当我点击 textView 或加载页面时,它停止 运行 并写入不幸的是,appName 已停止。
for (int i = 0 ; i < MAX_BUTTONS; i++){
Button button = (Button) getLayoutInflater().inflate(R.layout.button_layout,buttonsContainer,false);
button.setText("Test" + i);
button.setOnClickListener((View.OnClickListener) this);
buttonsContainer.addView(button);
if (i != MAX_BUTTONS - i){
buttonsContainer.addView(new Space(this),new ViewGroup.MarginLayoutParams(buttonsSpacing,buttonSize));
}
}
我认为这是因为您在 setOnClickListener 中进行了强制转换。如果您的 class 实现了侦听器,则只需使用 "this" 作为参数,则无需强制转换。另请注意,您正在通过循环调用 getLayoutInflater 创建不必要的对象垃圾。您需要做的就是在循环外调用一次,并使用它的引用。这样,您只创建一个,而不是创建 n+ 个对象。最后我看到你在打电话
if(i != MAX_BUTTONS - i)
你不是说
if(i != MAX_BUTTONS - 1)
看起来您可能需要在循环的每次迭代中创建一个新的 Button 对象,而不是扩充布局,例如
for (int i = 0 ; i < MAX_BUTTONS; i++){
Button button = new Button(this);
button.setText("Test" + i);
button.setOnClickListener((View.OnClickListener) this);
buttonsContainer.addView(button);
if (i != MAX_BUTTONS - i){
buttonsContainer.addView(new Space(this),new ViewGroup.MarginLayoutParams(buttonsSpacing,buttonSize));
}
}
由于您是以编程方式创建按钮,因此您可能需要检查 this 创建 LayoutParams 的答案。
编辑:我想提一下,如果您的 Activity 实现了 View.OnClickListener,我同意 Bryan Mill 对您的回答,您可以仅通过传递上下文来构造您的侦听器,例如,button.setOnClickListener(this),以及你可能打算写 if(i != MAX_BUTTONS - 1) 而不是 -i.