例如点击一个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="单击我"
/>
另外,关于回调机制有些不明白,看的是李刚的疯狂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="单击我"
/>
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();
}
}