有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 java。lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin。jvm。内部的内在的。检查参数不完整

我正在为loginbutton使用一个进度按钮库https://github.com/leandroBorgesFerreira/LoadingButtonAndroid,当我试图通过在firebase中单击此按钮来创建用户时,我得到以下错误

我在这里发现了相同的错误java.lang.IllegalArgumentException : Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,但我无法得到它

   java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter bitmap
    at br.com.simplepass.loadingbutton.customViews.CircularProgressButton.doneLoadingAnimation(Unknown Source:2)
    at com.choudhary.apnidukan.LoginActivity$1$1.onComplete(LoginActivity.java:82)

我的后勤活动

public class LoginActivity extends AppCompatActivity {


EditText email, password, confirmpassword;

FirebaseAuth firebaseAuth;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    firebaseAuth = FirebaseAuth.getInstance();


    final CircularProgressButton btn = (CircularProgressButton) findViewById(R.id.btn_id);

    email = findViewById(R.id.edit_text_email);
    password = findViewById(R.id.edit_text_password);
    confirmpassword = findViewById(R.id.edit_confirmPassword);


    btn.setOnClickListener(new View.OnClickListener() {



        @Override
        public void onClick(View view) {

            if (TextUtils.isEmpty(email.getText().toString())) {
                email.setError("Email is must");
                return;
            }

            if (TextUtils.isEmpty(password.getText().toString())) {
                password.setError("Password is must");
                return;
            }

            if (TextUtils.isEmpty(confirmpassword.getText().toString())) {
                confirmpassword.setError("Password not Matched");
                return;
            }

            if (!password.getText().toString().trim().equals(confirmpassword.getText().toString().trim())) {
                confirmpassword.setError("Password not matched");
                return;
            }

            String EMAIL = email.getText().toString();
            String PASSWORD = password.getText().toString();
            btn.startAnimation();

            final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_baseline_check_24);

            firebaseAuth.createUserWithEmailAndPassword(EMAIL, PASSWORD).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {

                    if (task.isSuccessful()) {
                        btn.doneLoadingAnimation(R.color.colorPrimaryDark, bitmap);
                        Intent in = new Intent(LoginActivity.this, mainDrawerActivity.class);
                        startActivity(in);
                        finish();
                    } else {
                        btn.revertAnimation();
                        Toast.makeText(LoginActivity.this, task.getException().getLocalizedMessage(), Toast.LENGTH_SHORT).show();
                          btn.stopAnimation();
                    }

                }
            });


        }
    });


}

}


共 (1) 个答案

  1. # 1 楼答案

    返回的位图在^{处为。这就是为什么在btn.doneLoadingAnimation(R.color.colorPrimaryDark, bitmap);处出现错误。要从drawable中获得正确的bitmap,可以使用下面的方法。比如:

        public static Bitmap drawableToBitmap (Drawable drawable) {
        Bitmap bitmap = null;
    
        if (drawable instanceof BitmapDrawable) {
            BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
            if(bitmapDrawable.getBitmap() != null) {
                return bitmapDrawable.getBitmap();
            }
        }
    
        if(drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
            bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Single color bitmap will be created of 1x1 pixel
        } else {
            bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
        }
    
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
        drawable.draw(canvas);
        return bitmap;
    }
    

    并在firebase回调方法中调用上述方法。比如:

        firebaseAuth.createUserWithEmailAndPassword(EMAIL, PASSWORD).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
    
                if (task.isSuccessful()) {
                    // Create Bitmap here         
                    Bitmap bitmap = drawableToBitmap(getResources().getDrawable(R.drawable.ic_baseline_check_24));
                    btn.doneLoadingAnimation(R.color.colorPrimaryDark, bitmap);
                    Intent in = new Intent(LoginActivity.this, mainDrawerActivity.class);
                    startActivity(in);
                    finish();
                } else {
                    btn.revertAnimation();
                    Toast.makeText(LoginActivity.this, task.getException().getLocalizedMessage(), Toast.LENGTH_SHORT).show();
                    btn.stopAnimation();
                }
    
            }
        });