首页 > 解决方案 > Android 应用程序在某些设备中无故崩溃

问题描述

我在 Android Studio 上构建了一个运行良好的应用程序,但是由于我已经在 6 种不同的 android 设备上测试了该应用程序,并且其中 4 台设备运行良好,其中一个是应用程序在注册表活动后崩溃,而在另一个应用程序中,一切正常,直到按下按钮,但这很奇怪,因为其他 4 台设备上都没有发生此错误。

我看不到任何模式,我唯一的线索是它们都与编写共享首选项的过程有关,我把代码留给你。

我希望你能弄清楚我看不到的东西。

mDataBase.child("Users").child("A").addListenerForSingleValueEvent(new ValueEventListener() { // Lectura
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    String numcliente = Objects.requireNonNull(dataSnapshot.child("Numero Cliente").getValue()).toString(); // Obtiene valor
    Toast.makeText(registro1.this, "Su numero de cliente es: " + numcliente, Toast.LENGTH_SHORT).show();

// Note: This Toast works fine //

    SharedPreferences.Editor editor = cliente.edit();
    editor.putString("km", km);
    editor.putString("numcliente", numcliente);
    editor.putString("cel", number);
    editor.putString("dir", dir);
    editor.putString("ent1", ent1);
    editor.putString("ent2", ent2);
    editor.putString("name", name);
    editor.apply();

    final Map <String, Object> map = new HashMap<>();
    map.put("Nombre", name);
    map.put("Correo Electronico", email);
    map.put("Celular", number);
    map.put("Contraseña", password);
    map.put("Kilometro", km);
    map.put("Direccion", dir);
    map.put("Entrecalle 1", ent1);
    map.put("Entrecalle 2", ent2);
    map.put("Referencia", desc);
    // map.put("Numero Cliente", numcliente);
    //final String id = Objects.requireNonNull(mAuth.getCurrentUser()).getUid();

    mDataBase.child("Users").child(numcliente).setValue(map).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task2) {
            if(task2.isSuccessful()){
                mDataBase.child("Users").child("A").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        String numcliente = Objects.requireNonNull(dataSnapshot.child("Numero Cliente").getValue()).toString();
                        int numcliente1 = Integer.parseInt(numcliente);
                        final int numcliente2 = numcliente1 + 1;
                        //final String numclientefinal = Integer.toString(numcliente2);
                        Map<String, Object> numclientenew = new HashMap<>();
                        numclientenew.put("Numero Cliente", numcliente2);
                        mDataBase.child("Users").child("A").setValue(numclientenew).addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                //Toast.makeText(registro1.this, "Proximo usuario es " + numcliente2, Toast.LENGTH_SHORT).show();
                            }
                        });
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });
                startActivity(new Intent(registro1.this, menu.class));
                finish();
            }else{
                Toast.makeText(registro1.this, "No se pudieron crear los datos", Toast.LENGTH_SHORT).show();
            }
        }
    });
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

标签: javaandroid

解决方案


在哪个设备应用程序崩溃时,连接是到 android studios 在其中运行一个应用程序,然后在应用程序崩溃时同时在 android studios 中打开 logcat,在 logcat 中查看它会显示应用程序崩溃的原因。


推荐阅读