【问题标题】:Syntax error setOnClickListener语法错误 setOnClickListener
【发布时间】:2013-01-22 04:48:36
【问题描述】:

我正在阅读一本 Java 练习书,但遇到了这个语法错误。我已经搜索了 onSetClickListener 语法错误,并且不认为我在重复问题。 Eclipse 说“令牌“setOnClickListener”上的语法错误,此令牌后应有标识符”。感谢您的帮助!

package fifth.example.eventhandling;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener{
    Button button = (Button)findViewById(R.id.button1);
    button.setOnClickListener(this);  <<ERROR HERE

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public void onClick(View arg0) {
        TextView text = (TextView)findViewById(R.id.textmessage);
        text.setText("BUTTON HAS BEEN CLICKED. EVENT PROCESSED.");

    }

}

【问题讨论】:

    标签: java android eclipse


    【解决方案1】:

    一个问题是:代码中与按钮相关的代码应该在onCreate() 内部和setContentView... 之后

        Button button = (Button)findViewById(R.id.button1);
        button.setOnClickListener(this);  <<ERROR HERE
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    

    应该是:

    公共类 MainActivity 扩展 Activity 实现 OnClickListener{ 按钮按钮;//声明按钮听到

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button button = (Button)findViewById(R.id.button1);
           button.setOnClickListener(this);  <<ERROR HERE
    
        }
    

    }

    【讨论】:

    • @viatierra :这是在得到答案后提出问题的不正确方法,请删除它。如果您在这里得到帮助,请接受回答朋友
    【解决方案2】:

    目前您正在尝试在设置 Activity 布局之前初始化按钮。在setContentView 之后在 Activity 的 onCreate 中移动按钮初始化为:

    public class MainActivity extends Activity implements OnClickListener{
        Button button ; //<<< declare  button here
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
           button = (Button)findViewById(R.id.button1);  //<<< initilze here
           button.setOnClickListener(this);   
        }
    

    【讨论】:

      【解决方案3】:

      你的代码应该是这样的。

      public class MainActivity extends Activity implements OnClickListener{
      
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
      
      Button button = (Button)findViewById(R.id.button1);
      button.setOnClickListener(this);  <<ERROR HERE
      }
      
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.activity_main, menu);
          return true;
      }
      
      @Override
      public void onClick(View arg0) {
          TextView text = (TextView)findViewById(R.id.textmessage);
          text.setText("BUTTON HAS BEEN CLICKED. EVENT PROCESSED.");
      
      }
      

      【讨论】:

        猜你喜欢
        • 2013-11-25
        • 1970-01-01
        • 2011-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多