Android 按钮从片段内部单击侦听器
在使用活动时,我通常对button click事件的编程没有问题,但现在我正在研究Android 按钮从片段内部单击侦听器,android,Android,在使用活动时,我通常对button click事件的编程没有问题,但现在我正在研究片段,我无法使button click事件工作 我的代码: public class LoginFragment extends Fragment { Button btnCadastrar; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewG
片段
,我无法使button click事件工作
我的代码:
public class LoginFragment extends Fragment {
Button btnCadastrar;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_login, container, false);
btnCadastrar = (Button)view.findViewById(R.id.btn_cadastrar);
btnCadastrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btnCadastrar.setBackground(Drawable.createFromPath("#FFFFFF"));
Toast.makeText( getContext(), "PIMBAAA", Toast.LENGTH_LONG).show();
}
});
return inflater.inflate(R.layout.fragment_login, container, false);
}
}
如您所见,我正在膨胀fragment\u login
,它有一个按钮:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient_1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginEnd="30dp"
android:layout_marginStart="30dp"
android:background="@drawable/transp_white_rect"
android:orientation="vertical"
android:padding="20dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Cadastrar"
android:id="@+id/btn_cadastrar"
android:padding="10dp"
android:textColor="#FFFFFF"
android:background="@color/light_blue"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>
</RelativeLayout>
除了当我点击/按下按钮时不会发生任何事情之外,按钮似乎是不可点击的。
我需要一些帮助来理解它为什么不工作以及如何修复它。查看您的碎片,您将看到名为2次的充气代码。 这意味着在您的代码上创建了2个fragment_登录的视图
return view
而不是
return inflater.inflate(R.layout.fragment_login, container, false);
因为它将返回一个新的fragment_登录视图对象工作得很好!非常感谢。但是我不明白为什么
侦听器不工作。您创建了两个视图。您已将侦听器设置为创建的第一个视图,但该视图不可见。。在oncreate方法末尾返回的视图将由片段使用,而不是您设置的侦听器,这就是为什么单击不起作用。。把答案标记为正确。