Android 按钮单击事件未在片段中激发

Android 按钮单击事件未在片段中激发,android,Android,我在片段中插入此代码时遇到问题 public class CameraConnectionFragment extends Fragment{ boolean clicked = false; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View view = inflater.inflat

我在片段中插入此代码时遇到问题

public class CameraConnectionFragment extends Fragment{

  boolean clicked = false;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup  container,Bundle savedInstanceState) {
    View view =  inflater.inflate(R.layout.camera_connection_fragment, container, false);
    Button button = (Button) view.findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {

        clicked = true;

      }
    });

    return view;

    }

}
问题的关键在于,当我在应用程序运行时按下按钮时,单击的变量没有改变。我已经放置了一个if语句来计算单击的变量,但是它总是设置为false,即使我一直按下按钮

按钮所在的代码(摄像头连接片段)如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<org.tensorflow.demo.AutoFitTextureView
    android:id="@+id/texture"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" />

<org.tensorflow.demo.RecognitionScoreView
    android:id="@+id/results"
    android:layout_width="match_parent"
    android:layout_height="112dp"
    android:layout_alignParentTop="true" />

<org.tensorflow.demo.OverlayView
    android:id="@+id/debug_overlay"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="25dp"
    android:layout_marginEnd="135dp"
    android:text="Button"
    android:onClick="getMe"/>

</RelativeLayout>


你知道为什么会这样吗

检查单击变量的if语句放在哪里?也许,在触发click侦听器之前,您的代码已经通过了if语句。请看以下代码:

boolean clicked = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup  container,Bundle savedInstanceState) {
View view =  inflater.inflate(R.layout.camera_connection_fragment, container, false);
Button button = (Button) view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    //Put your logic in the if(clicked) control.
    clicked = true // you can delete this line
    (your logic)
  }
});

return view;

}

@Override
   protected void onStart() {
    super.onStart();
    //You can delete the below if check and move your logic to onClick method
    if(clicked) {
     (your logic)
    }
}

在上面的代码中,
单击
变量签入
onStart
始终为false,因为它在触发单击侦听器之前已经执行。如果可能,您可以在click listener的
onClick
方法中检查clicked变量。如果您共享放置If逻辑的位置,我们可以提供更正确的答案。

单击
按钮时,值必须更改。我希望您在同一个类中使用布尔值是的,它是一种布尔类型,并且与我在重写方法中使用if语句的类相同。我想做的是在单击按钮时触发if事件。好的,我知道了,所以变量总是false。这和你写的代码完全一样,所以,我怎么能让变量始终为false,但当我按下按钮时,它变为true并触发if事件?正如我说的,如果可能,你可以将if逻辑放在onClick方法中。我已经编辑了我的答案,你可以检查一下。实际上,即使您不需要(单击)check,您也可以删除,如果您希望您可以直接将代码块放入onClick方法中。