按钮需要单击两次才能工作 - 为啥?

Posted

技术标签:

【中文标题】按钮需要单击两次才能工作 - 为啥?【英文标题】:Button needs to be clicked twice to work - why?按钮需要单击两次才能工作 - 为什么? 【发布时间】:2019-05-30 22:20:16 【问题描述】:

我的问题是我的活动中的 Button 需要单击两次才能执行在 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_
android:layout_
android:fillViewport="true"
android:scrollbars="vertical">

<ScrollView

    android:layout_
    android:layout_
    android:fillViewport="true"
    android:scrollbars="vertical">

    <LinearLayout

        android:id="@+id/llLayout"
        android:layout_
        android:layout_
        android:layout_margin="12dp"
        android:orientation="vertical">


            <LinearLayout
                android:layout_
                android:layout_
                android:layout_gravity="bottom"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:gravity="center">

                <Button
                    android:id="@+id/btnUpdateFamily"
                    android:layout_
                    android:layout_
                    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>

在另一个 MainActivity 中初始化此片段时。

【问题讨论】:

您希望双击或在第二次单击时工作 它在第二次点击时起作用。虽然它应该在第一次点击时起作用。 尝试从 xml 中点击 你的意思是说按钮xml代码中的OnClick属性吗? 您介意删除按钮初始化周围的try-catch 并查看是否抛出了实际异常吗? 【参考方案1】:

对于片段,最好使用onViewCreated 方法中的所有视图单击。可能未准备好视图,但您开始单击 。并且您使用try catch 块您是否在日志中看到任何异常。我不知道。但是您可以在 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();

        
    );



【讨论】:

谢谢兄弟。这对我有用。 欢迎您! @java蜜蜂 嗨。我想问题还没有解决。我运行该应用程序,它在应用您建议的更改时首次运行。它现在给出了同样的问题。按钮需要点击两次才能工作。 buttonName.bringToFront();试试看 还是一样。很抱歉删除了答案标志。我急需解决这个问题。

以上是关于按钮需要单击两次才能工作 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我需要单击两次才能在输入字段中生成一个值

为啥显示下拉列表需要在 DataGridView 中单击两次?

为啥我需要按两次后退按钮才能第一次关闭片段?

为啥我必须执行两次按钮功能才能使我的逻辑正常工作?

Android - VideoView 需要按两次 BACK 才能退出

为啥按钮单击两次插入数据