Android OnClick使每个新项目都失败

Android OnClick使每个新项目都失败,android,onclick,onclicklistener,Android,Onclick,Onclicklistener,第一个帖子。我正在学习一些关于Android编程的课程,这些课程都是相当新的,但不是一个完全的新手。我很久以前就有编程方面的背景 出于某些奇怪的原因,旧项目的OnClick运行良好,但我今天创建的每个项目,无论是Genymotion还是AVD,OnClick都从未启动过,即使在我创建的以下简单示例中也是如此。 这是我正在处理的原始项目,我甚至不能点击按钮(好像前面有一个透明的东西) 如果有人能解释为什么当我打开基于22的旧项目时,所有东西都可以工作,但现在在23(16为向后)上运行OnClic

第一个帖子。我正在学习一些关于Android编程的课程,这些课程都是相当新的,但不是一个完全的新手。我很久以前就有编程方面的背景

出于某些奇怪的原因,旧项目的OnClick运行良好,但我今天创建的每个项目,无论是Genymotion还是AVD,OnClick都从未启动过,即使在我创建的以下简单示例中也是如此。

这是我正在处理的原始项目,我甚至不能点击按钮(好像前面有一个透明的东西)

如果有人能解释为什么当我打开基于22的旧项目时,所有东西都可以工作,但现在在23(16为向后)上运行OnClick不工作,那你就太好了。谢谢

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="ca.shaarable.planetxerox.admin_add_products_hardware">

<LinearLayout
    android:orientation="vertical"
    android:id="@+id/admin_add_printer_first"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.2">

    <TextView
        android:id="@+id/admin_add_printer_tv_name"
        android:text="@string/admin_add_printer_tv_name"
        android:textSize="12sp"
        android:layout_marginStart="10dp"
        android:layout_marginLeft="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>


    <EditText
        android:id="@+id/admin_add_printer_et_name"
        android:text="@string/admin_add_printer_et_name"
        android:layout_marginStart="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>


</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:id="@+id/admin_add_printer_second"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.65">

    <TextView
        android:id="@+id/admin_add_printer_tv_thumbnail"
        android:text="@string/admin_add_printer_tv_thumbnail"
        android:textStyle="italic"
        android:layout_marginBottom="5dp"
        android:gravity="center_horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <ImageView
        android:id="@+id/admin_add_printer_image"
        android:src="@drawable/igen5"
        android:layout_gravity="center_horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:id="@+id/admin_add_printer_third"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.15">

    <LinearLayout
        android:id="@+id/admin_add_printer_sublayout"
        android:orientation="horizontal"
        android:layout_marginTop="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_weight="1"
            android:layout_marginRight="10dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Button
                android:id="@+id/admin_add_printer_CANCEL"
                android:text="@string/admin_add_printer_CANCEL"
                android:background="#F99F1C"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>

        </LinearLayout>

        <LinearLayout
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Button
                android:id="@+id/admin_add_printer_ADD"
                android:text="@string/admin_add_printer_ADD"
                android:background="#2ABDBA"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>


        </LinearLayout>

    </LinearLayout>

</LinearLayout>
}


尝试添加
.setOnClickListener(此)内部onCreate(…)方法


希望有此帮助

问题在您的代码中

                <Button
                android:id="@+id/admin_add_printer_ADD"
                android:text="@string/admin_add_printer_ADD"
                android:background="#2ABDBA"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="onClick" // add this line
               />


您缺少每个
按钮的
设置ClickListener(此)
功能
好的,谢谢您的帮助。成功了。:)但是我仍然不知道为什么我不能使用推荐的方式(Implements View.OnClickListener)。我不知道你说什么
为什么我不能使用推荐的方式(Implements View.OnClickListener)
。你能解释一下吗?嗨,潘,谢谢你的帮助。我没有告诉xml布局onClick=“onClick”。@Shaare我认为我的方式比上面的anwser更适合处理onClick事件:)我希望我能记住一切。。。谢谢你,基舒,就这样!非常感谢。@KishuDroid当然这个解决方案会奏效,但这不是个好主意。这将使您的代码更难阅读和修改future@PhanVan Linh:android:onClick除了代码更少之外还有一个主要优势——它是布局资源的一部分。根据设备的当前配置,在运行时选择资源。UI的某些部分可能会使用相同布局的不同变体,具体取决于设备是否处于横向/纵向模式、屏幕大小是否不同等。在这种情况下,您可以在每个元素上使用onClick属性来适当地连接,而不是使用大量代码来确定运行时存在哪些元素。
protected void onCreate(Bundle savedInstanceState){
  ...
  addBtn.setOnClickListener(this);
}
                <Button
                android:id="@+id/admin_add_printer_ADD"
                android:text="@string/admin_add_printer_ADD"
                android:background="#2ABDBA"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="onClick" // add this line
               />