Coordinator Layout 中的按钮点击无效

5

我在一个相对布局中放置了一个协调布局。该协调布局由两个按钮组成。我设计了通常的onclick函数,但是这些按钮似乎无法被点击。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/relativeLayoutMain"
    android:layout_margin="0dp"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="com.example.shaby.payshare.WorkPageOneFragment">

    <android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/add1"
            android:layout_gravity="bottom|right"
            android:text="ADDBene"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/add2"
            android:layout_gravity="bottom|left"
            android:text="AddItem"/>
    </android.support.design.widget.CoordinatorLayout>



</RelativeLayout>

Java文件部分如下:

buttonAddB= (Button)view.findViewById(R.id.add1);


        buttonAddB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getContext(), "Hi", Toast.LENGTH_LONG).show();


            }
        });

问题是1)我的做法正确吗?2)如果是的话,为什么按钮不起作用?帮帮我。

请提供一个完整的代码示例。这意味着您必须有一个类和一个方法,就像您正在编译的实际代码中一样。这并不意味着要发布您的整个代码。您只需要为此处显示的代码提供周围的类和方法即可。我假设此代码来自onCreate(),但您需要向我展示以确保。您还应包括super()setContentView()行。 - Code-Apprentice
1
此外,请解释一下“不起作用”的含义。当您点击按钮时会发生什么?您期望发生什么? - Code-Apprentice
1
其他代码与此无关,所以我没有发布。而这段Java代码位于 onCreateView(...) 中。为了简单起见,我编辑了帖子,并相信其他部分在这里是不必要的。 - Shubham Agarwal Bhewanewala
1
我指的“不工作”是指视图已经成功创建,但当我点击按钮时,没有生成toast,也没有显示按钮按下效果。 - Shubham Agarwal Bhewanewala
1
请重新阅读我的第一条评论,并按要求编辑您的问题。我很感激您试图将代码保持在最小限度。但是,您已经走得太远了,留下了需要帮助您的代码。例如,您的问题没有说明您正在使用片段。这是一个重要的细节,可以通过像class MyFragment extends Fragment这样的代码轻松显示出来。 - Code-Apprentice
1个回答

1
两个想法:
1)检查buttonAddB = (Button) view.findViewById(R.id.add1)中的view是什么,并确保它引用您认为应该引用的内容;
2)您没有说明失败时会发生什么,所以我猜测这是一个NPE。尝试将Toast.makeText(getContext(), "Hi", Toast.LENGTH_LONG).show()更改为Toast.makeText(v.getContext(), "Hi", Toast.LENGTH_LONG).show()以查看是否有效。 getContext()可能返回null。
如果这些方法都不能解决问题,请发布有关故障的更多信息。

没有任何错误显示。视图看起来完美,但是按钮按下没有任何效果。 - Shubham Agarwal Bhewanewala
当我按下按钮时,我甚至怀疑是否发生了按钮按下事件。 - Shubham Agarwal Bhewanewala
我已经提供了完整的XML布局。 - Shubham Agarwal Bhewanewala
是的,我试过了。但是我在另一段代码中尝试了它,因为我之前改变了布局。在单独的代码中,这不是一个问题,一切都很顺利。我不知道当时发生了什么,可能是我的动态布局可能重叠了按钮。无论如何,感谢您的帮助。 - Shubham Agarwal Bhewanewala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接