当前位置: 首页 > 知识库问答 >
问题:

尝试在片段中实现OnClick侦听器

陆运乾
2023-03-14
    package com.example.finalapp;

import android.content.Intent;
import android.os.Bundle;

import androidx.annotation.NonNull;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;

import com.google.android.material.textfield.TextInputEditText;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.hbb20.CountryCodePicker;

/**
 * A simple {@link Fragment} subclass.
 * Use the  factory method to
 * create an instance of this fragment.
 */
public class buyer_fragment extends Fragment {
    public EditText mFirstname, mLastname, mUsername, mEmail, mPhone;
    public TextInputEditText mPassword;
    public CountryCodePicker ccp;
    public FirebaseAuth mAuth;
    public Button mSignUp;
    public View view;

    public buyer_fragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_buyer_fragment, container, false);
        initViews();


        return view;
    }


    public void login_back(View view) {
        Intent intent = new Intent(getActivity(), login.class);
        startActivity(intent);


    }

    public void initViews() {
        try {
            mFirstname = view.findViewById(R.id.first_name);
            mLastname = view.findViewById(R.id.last_name);
            mUsername = view.findViewById(R.id.user_name);
            mEmail = view.findViewById(R.id.email);
            mPhone = view.findViewById(R.id.phone_number);
            mPassword = view.findViewById(R.id.signup_password);
            ccp = view.findViewById(R.id.ccp);
            mSignUp = (Button) view.findViewById(R.id.signup_btn1);

           mSignUp.setOnClickListener(this::createUser);

        } catch (Exception e) {
            Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();
        }
    }

    public void createUser(View view) {
        try {
            String email = mEmail.getText().toString().trim();
            String password = mPassword.getText().toString().trim();
            mAuth = FirebaseAuth.getInstance();
            mAuth.createUserWithEmailAndPassword(email, password).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                @Override
                public void onSuccess(AuthResult authResult) {
                    Toast.makeText(getContext(), "User Created", Toast.LENGTH_LONG).show();
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();

                }
            });


        } catch (Exception e) {
            Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();
        }
    }


}
Attempt to invoke Virtual Method 'void.android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

共有1个答案

解飞语
2023-03-14

为什么不使用ViewBinding它将消除findviewbyid()的压力

有关更多信息,您可以查看绑定设置

您还可以查看如何在片段中使用ViewBinding

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
 view = inflater.inflate(R.layout.fragment_buyer_fragment, container, false);
 mFirstname = view.findViewById(R.id.first_name);
 mLastname = view.findViewById(R.id.last_name);
 mUsername = view.findViewById(R.id.user_name);
 mEmail = view.findViewById(R.id.email);
 mPhone = view.findViewById(R.id.phone_number);
 mPassword = view.findViewById(R.id.signup_password);
 ccp = view.findViewById(R.id.ccp);
 mSignUp = (Button) view.findViewById(R.id.signup_btn1);
 mSignUp.setOnClickListener(this::createUser);
    
}
 类似资料:
  • 我正在实现一个片段,该片段调用两个。

  • 问题内容: 我整夜都在绞尽脑汁,但似乎无法完成这一小事情。我想将SwitchPreference添加到我的应用程序的PreferenceActivity中。下面是一张图片。 在我说太多之前,我的问题恰好是这样的:我似乎无法仅在首选项的Switch部分上放置一个侦听器。我可以在首选项上设置onPreferenceTreeClick和onPreferenceClick,如果按文本部分,效果很好。但是,

  • 通常在片段中,我在onAttach()中附加一个监听器,并在onDetach()中取消监听器。 是否需要在onDetach()中将侦听器设置为null? 虽然我这样做是因为它使代码看起来更加对称,但似乎没有必要这样做,因为片段已经被销毁了,因为根据片段的生命周期,之前已经调用了onDestroyView()和onDestroy()。 提前谢谢。

  • 我有一个活动A。在这个活动的stepperLayout中,我使用了片段B。我从片段B调用对话片段C。在对话片段C上,我调用listenerInterface方法,但侦听器接口为空。所以有一个空指针异常。活动A没有实现接口。只有片段B实现了它。

  • 我正在尝试学习python来处理一个测试项目。是否有一种方法可以在python测试框架中实现类似功能的TestNG侦听器。 侦听器有诸如OnTestFailure()、OnTestSuccess、OnStart()等方法,当您想要做某些事情时,这些方法非常有用。 比方说,一个测试用例失败了,您想执行一些操作,比如截图。然后你可以只在一个地方写,而不是在每个测试方法中都写。