例如点击一个Button然后发生了onClick事件打开一个Activity,但这个是基于回调机制的事件处理用法,不是基于侦听器的,怎么做啊?
另外,关于回调机制有些不明白,看的是李刚的疯狂Android讲义,什么是全限定类名(类似:org.crazyit.event.MyButton  )?
使用这个全限定类名是怎么联系到该基于回调机制的事件处理的实现类的?java事件处理实体类
public class MyButton extends Button
{
public MyButton(Context context , AttributeSet set)
{
super(context , set);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
super.onKeyDown(keyCode , event);
Log.v("-crazyit.org-" , "the onKeyDown in MyButton");
//返回true,表明该事件不会向外扩散
return true;
}
}xml布局文件
<org.crazyit.event.MyButton  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="单击我"
/>

解决方案 »

  1.   

    android中所有的activity切换都是回调方式,这是按钮onclick无关。
      

  2.   

    public class MyCallback { private Listener listener ;
    public interface Listener{
    public void callbackMethod1();
    public void callbackMethod2();
    }

    public void callCallback() {
    listener.callbackMethod1();
    listener.callbackMethod2();
    }

    public void setListener(Listener l){
    listener = l;
    }
    }Activity:public class CallbackActivity extends Activity implements MyCallback.Listener{ @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            MyCallback callback = new MyCallback();
            callback.setListener(this);
            callback.callCallback();
        } @Override
    public void callbackMethod1() {
    // 这里就是我们自己的回调函数1
    Toast.makeText(this, "callback 1", Toast.LENGTH_LONG).show();
    } @Override
    public void callbackMethod2() {
    // 这里就是我们自己的回调函数2
    Toast.makeText(this, "callback 2", Toast.LENGTH_LONG).show();
    }
    }
      

  3.   

    系统的调用类似MyCallback.java,只不过它是在framework里的Instrumentation.java里实现的