就是基于回调的事件处理,重写的回调方法不起作用,而且也不知道自定义的View组件,怎么在Manifest.xml文件中使用。

解决方案 »

  1.   


    哪里回调了?自定义的view在xml中写上包名+类型就可以引用了,但是必须有参数为Context和AttributeSet的构造方法,需要new一个自定义view,则需要有参数为Context的构造方法
      

  2.   

    这是自定义的MyButton
    public class MyButton extends Button { public MyButton(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    } public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    Log.i("keydown", "Hand in MyButton!");
    return super.onKeyDown(keyCode, event);
    }
    }
    这是main.xml文件引用它
    <com.ad.tao.MyButton
            android:id="@+id/btn"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="按钮" />
    还是有错,应该怎么写呢?
      

  3.   

    通过 xml 定义的时候,必须实现三个建构函数;你只实现了一个
      

  4.   

    我也是按照疯狂讲义上做的,单击后catlog里没有提示"-work.mybutton-", "the onKeyDown in MyButton"
    大家帮我看看是哪里没有配置或配置错误
    这是xml布局文件
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="work.mybutton.MainActivity"
        tools:ignore="MergeRootFrame" 
        >
       <work.mybutton.MyButton
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:text="Click me!"
           android:id="@+id/mybutton"
           />      
    </LinearLayout>重新新定义的Button
    public class MyButton extends Button { public MyButton(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    } public MyButton(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
    } public MyButton(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    // TODO Auto-generated constructor stub
    } @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    super.onKeyDown(keyCode, event);
    Log.v("-work.mybutton-", "the onKeyDown in MyButton");
    return true;
    }
    }
    主程序
    public class MainActivity extends Activity {
    MyButton mybutton =null; @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mybutton = (MyButton)findViewById(R.id.mybutton);

    }
    }