【问题标题】:cannot resolve symbol 'setOnTouchListener'无法解析符号“setOnTouchListener”
【发布时间】:2017-02-11 16:12:33
【问题描述】:
Button button = (Button)findViewById(R.id.button1);

button.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN ) {
            //Insert desired code here
            return true;
        }
        return false;
    }
});

public void backtogreen(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    startActivity(intent);
}

如何修复此代码? 我有那个错误:

  • 无法解析符号“setOnTouchListener” - 用于 setOnTouchListener
  • 无效的方法声明;需要返回类型 - 用于 onTouchListener
  • 此处不允许注释 - 用于公共布尔值之上的 @override
  • 无法为两个“事件”解析符号“事件”
  • 无法从结果类型为 void 的方法返回值以返回 true 并返回 false

请帮忙!

【问题讨论】:

    标签: android android-activity ontouchlistener


    【解决方案1】:

    您不能在类主体中运行除原始赋值之外的代码。您的代码需要采用某种方法,例如 onCreate:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        Button button = (Button) findViewById(R.id.button1);
        button.setOnTouchListener(new View.OnTouchListener() {
    
            @Override
            public boolean onTouch(View view, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN ) {
                    //Insert desired code here
                    return true;
                }
                return false;
            }
        });
    }
    

    【讨论】:

    • 我的主要目标是让按钮在触摸时执行,就像它被点击一样。现在我在我的代码下遇到错误:(
    【解决方案2】:

    您的方法签名不正确。试试这个代码:

    button.setOnTouchListener(new View.OnTouchListener() {
    
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN ) {
                    //Insert desired code here
                    return true;
                }
                return false;
            }
        });
    

    【讨论】:

    • 这是一个作业,我想知道如何处理这些错误。我应该编码什么,例如使“视图 v”正确?
    • @Rediner 另一个答案应该已经解决了代码中的所有问题。如果您想要点击行为,请使用button.setOnClickListener()
    • 您知道是否可以使用 onTouchlistener '滑动' 一些按钮并让它们连续执行?
    • @Rediner 不完全确定您所说的 - “连续执行?”。但是,您可以查看this question
    • 我的意思是你不需要松开手指来触发另一个按钮。我想要一排按钮来执行相同的操作,您需要不断滑动它们以保持它们执行操作。
    【解决方案3】:

    使用以下方法

     @Override
     protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
    
     Button button = (Button) findViewById(R.id.button1);
    
    
    
            OnTouchListener m_onTouchListener = new OnTouchListener() {
           @Override
    
            public boolean onTouch(View p_v, MotionEvent p_event) {
    
               if (event.getAction() == MotionEvent.ACTION_DOWN ) {
                //Insert desired code here
                return true;
            }
            return false;
            }
        };
    
        button.setOnTouchListener(m_onTouchListener);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 2016-12-31
      • 1970-01-01
      相关资源
      最近更新 更多