当前位置: 首页 > 知识库问答 >
问题:

按钮需要点击两次才能工作——为什么?

丁鸿信
2023-03-14

我的问题是,我的活动中的按钮需要单击两次,以使代码执行用onClick方法编写的代码。当我共享我的活动代码和布局文件代码时。请引导我解决这个问题。

活动(片段)

public class SelfFamilyInfoActivity extends Fragment {

Button btnUpdateFamily;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.self_mem_details_family_info, 
  container, false);

    try {

        btnUpdateFamily = v.findViewById(R.id.btnUpdateFamily);

        btnUpdateFamily.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Toast.makeText(getActivity(), "Button Clicked", 
        Toast.LENGTH_SHORT).show();

            }
        });


    } catch (Exception e) {
        e.printStackTrace();
    }

    return v;

}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}
}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="vertical">

<ScrollView

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:scrollbars="vertical">

    <LinearLayout

        android:id="@+id/llLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="12dp"
        android:orientation="vertical">


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:gravity="center">

                <Button
                    android:id="@+id/btnUpdateFamily"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:layout_marginBottom="5dp"
                    android:background="@drawable/button_background"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:text="Update Family Info"
                    android:textColor="@color/buttonTextColorWhite"
                    android:textSize="18sp" />

            </LinearLayout>


        </LinearLayout>

 </ScrollView>
 </android.support.v4.widget.NestedScrollView>

而此片段正在另一个主要活动中初始化。

共有1个答案

顾琛
2023-03-14

对于片段,最好使用您的“所有视图”单击onViewCreated方法。视图可能未准备好,但您已开始单击。您使用try-catchblock在日志中是否看到任何异常。我不确定。但是您可以在onViewCreated方法中尝试单击侦听器。

更新尝试使用此代码。此代码在我的部分工作

 Button btnUpdateFamily;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.self_mem_details_family_info,
            container, false);

    return v;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    btnUpdateFamily = view.findViewById(R.id.btnUpdateFamily);

    btnUpdateFamily.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Toast.makeText(getActivity(), "Button Clicked",
                    Toast.LENGTH_SHORT).show();

        }
    });


}
 类似资料:
  • 所以我的问题是,当我点击一个radiobutton来添加类“Completed”时,它执行了所要执行的操作,但是当我想要移除它时,我需要点击两次,我不知道为什么。如有任何帮助,我们将不胜感激。谢谢 HTML CSS JavaScript

  • 背景:试图在一个页面站点上为移动设备构建一个全屏菜单。 问题:需要单击#handle div两次才能执行操作。我尝试过以不同的方式使用follows,但我似乎在某些方面实现错误:live/die、bind/unbind、on/off、delegate/Undelegate。 我不明白我该如何解决我的问题。很抱歉在一些Divs上出现了错误的ID名。 HTML Jquery点击li时,用户将向下滚动页

  • 问题内容: 因此,我在应用程序中有一个按钮和一个edittext。当我单击按钮并在edittext中写一些东西时,textview改变了。除了一件事以外,一切都应按其应有的方式进行。我必须单击两次按钮才能使其正常工作(仅在我第一次打开活动时)。打开活动后的第一次,我按下按钮,但没有任何反应,此后它应能正常工作。 我已经对此进行了研究,据我所知,引起麻烦的是专注,但我尝试了几件事却没有任何效果。 按

  • 好的,伙计们。我正在尝试创建一个小费计算器,我遇到了一些问题。问题是当用户输入一个值时,程序会询问(禁用enter按钮)用户是否希望包含提示,因此用户选择是或否。如果选择了其中任何一个,前面的问题就消失了,文字出现“小费包括在内”或“小费不包括在内”。现在,如果用户想要编辑上面的值,按钮将再次被启用,但是如果它点击了一个,它将再次询问用户是否想要包含提示。所以我的问题是,我怎样才能使它使它,无论那

  • 问题内容: 我有一个非常简单的表单,其中需要选择一个单选按钮以使表单有效。单选按钮由生成。 从该小提琴中可以看出,理想的行为是,当第一次单击单选按钮时,应该验证表单(是唯一的元素),但是请注意(在同一单选按钮上)按钮或任何其他)来验证表单: http://jsfiddle.net/Xsk5X/3/ 我想念什么? 问题答案: 尝试将ng-click属性添加到您的单选按钮输入中。 感谢Manny D首

  • 我在另一个中有一个。我注意到,为了使嵌套的滚动视图开始滚动,我必须点击两次。 我尝试使用一些属性,如、和,但这些都没有帮助。 我不能提供任何真实的代码,因为项目相当大,在滚动视图之间有多个组件。但是,基本结构与此类似: