【问题标题】:Android custom button generic click handlerAndroid 自定义按钮通用点击处理程序
【发布时间】:2012-12-03 06:11:12
【问题描述】:

我正在尝试实现一个自定义按钮,它允许我在单击按钮时执行一组标准的操作(例如编写日志),并执行特定于每个按钮实例的分配的单击侦听器。这可能吗?

非常感谢

【问题讨论】:

  • 这听起来像是标准的按钮操作。您描述的是标准按钮功能,适用于 Android。提供更多细节。
  • 我要做的是:我有一个扩展按钮的类。我在整个应用程序中都使用这个按钮类,所以它被使用了好几次。该应用程序用于商业环境,当用户报告问题时,我们会带他去调查问题。因此,为了跟踪用户活动,我想在每次用户单击按钮时写一个日志(我有一个函数可以获取给定资源的 id 名称)。所以需要不要在每个点击监听器上都写日志,而是在按钮本身就有这个逻辑。

标签: android android-button android-custom-view buttonclick


【解决方案1】:

找到解决方案,通过这种方式,对于按钮的每个实例,我可以在执行指定的点击侦听器之前执行一组标准的操作(在这种情况下,它只是写一个日志)

@Override
    public void setOnClickListener(final OnClickListener l) {

        super.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                LogHelper.WriteLogInfo("click");
                l.onClick(v);

            }
        });
    }

【讨论】:

    【解决方案2】:

    试试这个:

    为您的 Activity 实现 OnClickListener :

    public class MainActivity extends Activity implements OnClickListener
    

    为所有视图添加点击监听器:

    boldButton = (Button) findViewById(R.id.bold);
    boldButton.setOnClickListener(this);
    

    然后覆盖所有视图通用的 OnClick 事件:

    @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.bold:
                // Do Something                  
                break;
    
            case R.id.italic:
                // Do Something
                break;
    
            case R.id.underline:
                // Do Something
                break;
    
            case R.id.reset:
                // Do Something
                break;
    
            default:
                break;
            }
        }
    

    希望对你有帮助。

    谢谢。

    【讨论】:

    • 感谢您的建议,但我不能这样做,因为该按钮已使用了数百次
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多