.setOnClickListener 在空对象引用上(不能调用 ID?)

在这个应用程序中,我正在动态创建一个带有 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:https ://pastebin.com/0fYSKJyj


应用图片:https : //imgur.com/a/1Dfx4fJ


动漫人物
浏览 140回答 2
2回答

紫衣仙女

您无需再次查找视图。你可以打电话subButton.setOnClickListener(...);我看不出container和之间有任何关系mainContainer。您将视图添加到您的container,但正在从mainContainer
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java