使用活动时,对按钮单击事件进行编程通常没有问题,但是现在我正在研究fragments
,并且无法使ButtonClick事件正常工作。
我的代码:
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_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>
除了我单击/按下按钮时什么都没有发生的事实外,该按钮似乎不可点击。 我需要一些帮助,以了解为什么它不起作用以及如何解决它。
答案 0 :(得分:1)
查看您的Fragment,您会看到称为2次的膨胀代码。 这意味着在您的代码上创建了2个fragment_login的视图。
return view
代替
return inflater.inflate(R.layout.fragment_login, container, false);
因为它将返回fragment_login视图的新对象