callback-创建handler对象指定一个Callback的代码报错

问题描述

创建handler对象指定一个Callback的代码报错

public class MainActivity extends Activity implements OnClickListener{
private TextView textView;
private ImageView imageView;
private int index;
private int images [] = {R.drawable.image1,R.drawable.image2,R.drawable.image3};
private MyRunnable runnable = new MyRunnable();
private Button button;

class Person{
    public int age;
    public String name;

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "name=" + name + " age=" + age;
    }
}

private Handler handler = new Handler(new Callback() {

    @Override
    public boolean handleMessage(Message msg) {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(),"" + 1, 1).show();
        return false;
    }
}){
    public void handleMessage(Message msg){
        Toast.makeText(getApplicationContext(),"" + 2, 1).show();
    }
};

class MyRunnable implements Runnable{
    @Override
    public void run() {
        // TODO Auto-generated method stub
        index++;
        index = index % 3;
        imageView.setImageResource(images[index]);
        handler.postDelayed(runnable, 1000);
    }
}

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

    imageView = (ImageView) findViewById(R.id.imageView1);
    textView = (TextView) findViewById(R.id.textview);
    button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(this);

    new Thread(){
        public void run() {
            try {
                Thread.sleep(2000);
                Message message = handler.obtainMessage();
                Person person = new Person();
                person.age = 12;
                person.name = "mike";
                message.obj = person;
                message.sendToTarget();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        };
    }.start();

    handler.postDelayed(runnable, 1000);

}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    handler.sendEmptyMessage(1);
}

}

按照学习视频打得,一模一样,还是报错。
private Handler handler = new Handler(new Callback() {

    @Override
    public boolean handleMessage(Message msg) {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(),"" + 1, 1).show();
        return false;
    }
}){
    public void handleMessage(Message msg){
        Toast.makeText(getApplicationContext(),"" + 2, 1).show();
    }
};

搞不懂
problems报错信息:大概意思是handler没有这种定义的构造,第二个是handleMessage方法需要重写或实现。首先这个方法是视频上面大的,我是照葫芦画瓢。第二这个方法已经重写了,有Toast...
Description Resource    Path    Location    Type

The constructor Handler(new Callback(){}) is undefined MainActivity.java /handler_01/src/com/hao123/handler_01 line 35 Java Problem
Description Resource Path Location Type
The method handleMessage(Message) of type new Callback(){} must override or implement a supertype method MainActivity.java /handler_01/src/com/hao123/handler_01 line 38 Java Problem
我试过如果改一下标点符号就报个标点符号的错误 ,例如把最后一排括回来的大括号和分号删除
Description Resource Path Location Type
Syntax error, insert ";" to complete FieldDeclaration MainActivity.java /handler_01/src/com/hao123/handler_01 line 121 Java Problem
Description Resource Path Location Type
Description Resource Path Location Type
Syntax error, insert "}" to complete ClassBody MainActivity.java /handler_01/src/com/hao123/handler_01 line 121 Java Problem
但是这种报错是那种坑爹的报错,明显那个地方是要标点的

解决方案

把错误信息贴出来,看明白是什么错误

解决方案二:

搞了好久,晕死了。终于解决了
private Handler handler = new Handler(new Handler.Callback(){

    @Override
    public boolean handleMessage(Message msg) {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(),"" + 1, 1).show();
        return false;
    }

这个方法应该有一个对象调用,java 是面向对象的。
有一点挺搞不懂的。视频上不报错,难道是this调用的。还是我们的版本的问题

时间: 2024-08-20 22:24:37

callback-创建handler对象指定一个Callback的代码报错的相关文章

hibernate-Maven test一个Web项目,报错,弄了一天没弄好,求高手解答

问题描述 Maven test一个Web项目,报错,弄了一天没弄好,求高手解答 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultServletHandlerMapping' defined in class path resource [org/springframework/web/servlet/config/annotation/Delegating

hibernate配置-使用注解生成的uuid.hex 调用save()保存对象不发语句也不报错

问题描述 使用注解生成的uuid.hex 调用save()保存对象不发语句也不报错 @Id @GenericGenerator(name=""systemUUID""strategy=""uuid"") @GeneratedValue(generator=""systemUUID"") @Column(name = ""ID"" unique =

filepath-Pathon 删除指定目录下的文件, 我是coding online,无法调试,代码报错,具体如下:

问题描述 Pathon 删除指定目录下的文件, 我是coding online,无法调试,代码报错,具体如下: #Delete all files under the pointed path import os filePath = raw_input("Input path where you want delete:n") #If file path is null, we should initial the variable "/home" if file

tomcat部署一个新项目启动报错,老项目可以正常启动

问题描述 tomcat部署一个新项目启动报错,老项目可以正常启动 CompilerOracle: exclude org/hibernate/cfg/annotations/SimpleValueBinder.setType 2014-12-29 10:52:52 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.20. 2014-12-

tomcat-jvm每隔一个小时就会报错,打印hs_err_pid*.log

问题描述 jvm每隔一个小时就会报错,打印hs_err_pid*.log 在阿里云服务器上安装jdk7+tomcat7环境,启动tomcat,不发布任何应用,jvm也会不停出错 每隔一个小时就生成一个hs_err_pid*.log 系统版本: Linux iZ23usxuuqdZ 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux jdk版本 java vers

java-现在对方给一个地址,我在myeclipse里面生产客户端代码 报错,该怎么调用?

问题描述 现在对方给一个地址,我在myeclipse里面生产客户端代码 报错,该怎么调用? java 调用webservice WebService基于SoapHeader安全认证 解决方案 参考:http://blog.csdn.net/dslinmy/article/details/32076971 解决方案二: 使用apache提供的cxf,里面有个命令叫wsdl2java,可以产生客户端代码

过程函数-navicat for mysql 创建 带有IN参数 的过程时 保存报错

问题描述 navicat for mysql 创建 带有IN参数 的过程时 保存报错 如题. 解决方案 自己找到问题了,下面的参数要写上长度,例如:IN shebeihao varchar(20) 解决方案二:

关于OracleCommand.Parameters 的用法,我写了一个SQL,但总是报错,请大家指教!

问题描述 OracleConnectionConn=ConnStr();Conn.Open();OracleCommandComm=null;OracleDataReaderda1=null;stringsql="selectname,idcardfromm_person";Comm=newOracleCommand(sql,Conn);try{stringstrSql="";if(idcard!=""){if(strSql!="&qu

求助:在JAVA applet我想从网上引用一个图片为什么老报错

问题描述 我想引用个Imageimg=getImage(newURL("http://www.xyz.com/java/imgsample/"),"images/m1.gif");系统总是说--------------Configuration:MyTable-JDKversion1.6.0_24<Default>-<Default>--------------------D:MyTablesrcMyTable.java:31:未报告的异常j