java - 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) {
}
});
解决方案
在哪个设备应用程序崩溃时,连接是到 android studios 在其中运行一个应用程序,然后在应用程序崩溃时同时在 android studios 中打开 logcat,在 logcat 中查看它会显示应用程序崩溃的原因。
推荐阅读
- ios - 从 forEach 列表中的 URL 获取图像的 Swift 问题
- django - 将默认图像设置为模型中的 CloudinaryField
- git - 使用 gitflow 工作流程,分支是如何工作的?
- javascript - React-Native 应用程序上的 SectionList 标题和搜索的通用背景图像
- postgresql - 初学者别名
- jquery - jQuery toggleClass() 在浏览器中不起作用,但在小提琴中工作正常
- c++ - 分配 char 数组
- mysql - MySQL 8 获取当前使用的(默认)数据库名称
- sql - Azure 时间点还原
- php - 稍后使用“生成(随机字符)”和“完成(插入数据库)”的 HTML 表单