【发布时间】:2018-09-20 06:17:06
【问题描述】:
在这个应用程序中,我动态地创建了一个带有 LinearLayout、TextView 和两个按钮的计数器对象,我希望在类中使用 onClickListener,因为这似乎是最好的解决方案。
我唯一能想到的就是我在某种程度上弄错了 ID 创建。动态创建事物时的最佳做法是什么?
包含应用程序和所有代码的屏幕截图。
public class Counter implements View.OnClickListener {
private final int subButtonId = View.generateViewId();
...
private void createSubButton() {
subButton = new Button(context);
subButton.setLayoutParams(new LinearLayout.LayoutParams(buttonWidth, LinearLayout.LayoutParams.MATCH_PARENT, 0.5f));
subButton.setText("-");
subButton.setTextSize(buttonTextSize);
subButton.setId(subButtonId);
subButton.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL);
container.addView(subButton);
sub = mainContainer.findViewById(subButtonId);
sub.setOnClickListener(new MyOnClickListener() {
@Override
public void onClick(View v) {
subCount();
disp.setText(count.toString());
}
});
}
}
class MyOnClickListener implements View.OnClickListener {
public MyOnClickListener() {
}
@Override
public void onClick(View v) {
}
}
计数器类:https://pastebin.com/YTHUbGFf
主类:https://pastebin.com/p3p2PPEU
【问题讨论】:
-
在这里直接分享错误logcat ..
-
sub可能为空,分享完整的错误日志 -
您将视图添加到
container,然后尝试在mainContainer中查找。 -
我建议您创建一个 XML 布局并动态扩展它,或者更好地尝试实现 recyclerview,因为您正在处理计数器数组。
-
试试
mainContainer.findViewById(R.id.subButtonId);
标签: java android oop nullpointerexception