片段内部的按钮单击侦听器

时间:2018-06-28 00:54:51

标签: android

使用活动时,对按钮单击事件进行编程通常没有问题,但是现在我正在研究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>

除了我单击/按下按钮时什么都没有发生的事实外,该按钮似乎不可点击。 我需要一些帮助,以了解为什么它不起作用以及如何解决它。

1 个答案:

答案 0 :(得分:1)

查看您的Fragment,您会看到称为2次的膨胀代码。 这意味着在您的代码上创建了2个fragment_login的视图。

return view

代替

return inflater.inflate(R.layout.fragment_login, container, false);

因为它将返回fragment_login视图的新对象