我正在android studio中编写小应用程序,我想在一个函数中打印系统日志或显示吐司,但它在其他正常工作的函数中运行..这里是第一个函数的代码
private void checkBarcodeLength(){
if (containerbarcode_ausladen_string.length()==8){
filno_frombarcode = containerbarcode_ausladen_string.substring(1, 4);
if (filno_frombarcode.startsWith("0")){
filno_frombarcode = filno_frombarcode.substring(1,3);
}
checkFillocation();
}else if (containerbarcode_ausladen_string.startsWith("11")) {
filno_frombarcode = containerbarcode_ausladen_string.substring(5, 8);
if (filno_frombarcode.startsWith("0")){
filno_frombarcode = filno_frombarcode.substring(1,3);
}
checkFillocation();
} else if (containerbarcode_ausladen_string.startsWith("AP")) {
filno_frombarcode = containerbarcode_ausladen_string.substring(7, 10);
if (filno_frombarcode.startsWith("0")){
filno_frombarcode = filno_frombarcode.substring(1,3);
}
checkFillocation();
} else {
removeItemDB();
}
}
然后在这个函数中它做了工作
private void checkFillocation(){
Toast.makeText(ausladen.this,"Started searching for location", Toast.LENGTH_LONG).show();
filno_frombarcode_long = Integer.parseInt(filno_frombarcode);
/**Latitude -100m and +100m from my location*/
point1 = (Double.parseDouble(latout_ausladen) - 0.0008995);
point2 = (Double.parseDouble(latout_ausladen) + 0.0008995);
/**Longitude -100m and +100m from my location*/
point3 = (Double.parseDouble(lonout_ausladen) - 0.0013190);
point4 = (Double.parseDouble(lonout_ausladen) + 0.0013190);
/**Find Filiale from barcode*/
getfilno = myDb.getfilNo(filno_frombarcode_long);
/**Find Filiale near my location*/
findfil_nearmylocation = myDb.findfil_nearmyloc(point1, point2, point3, point4);
/**Get Filiale nummer from DB*/
if (getfilno.moveToFirst()) {
do {
id_filno = getfilno.getInt(getfilno.getColumnIndex("_id"));
filno = getfilno.getString(getfilno.getColumnIndex("filno"));
fillat = getfilno.getDouble(getfilno.getColumnIndex("fillat"));
fillon = getfilno.getDouble(getfilno.getColumnIndex("fillon"));
} while (getfilno.moveToNext());
}
getfilno.close();
/**Get Filiale nummer by my location from DB*/
if (findfil_nearmylocation.moveToFirst()) {
do {
id_filno_bymyloc = findfil_nearmylocation.getInt(findfil_nearmylocation.getColumnIndex("_id"));
filno_bymyloc = findfil_nearmylocation.getString(findfil_nearmylocation.getColumnIndex("filno"));
fillat_bymyloc = findfil_nearmylocation.getDouble(findfil_nearmylocation.getColumnIndex("fillat"));
fillon_bymyloc = findfil_nearmylocation.getDouble(findfil_nearmylocation.getColumnIndex("fillon"));
} while (findfil_nearmylocation.moveToNext());
}
findfil_nearmylocation.close();
System.out.print("Barcode: " + containerbarcode_ausladen_string);
System.out.print("FilNo: " + filno_frombarcode);
System.out.print("FilNo from geoLocation: " + filno_bymyloc);
//No Filiale nummer in barcode
if (getfilno.getCount()== 0) {
removeItemDB();
Log.d(anmelden.class.getName(),"count 0" );
//No Filiale nummer by my location
}else if ( filno_bymyloc == null ){
removeItemDB();
Log.d(anmelden.class.getName(),"filnobymyloc== null" );
//Found Filiale in barcode and with my location
} else if (getfilno.getCount()== 1 && filno.matches(filno_bymyloc) ){
removeItemDB();
Log.d(anmelden.class.getName(),"count 1, filno=filnobymyloc" );
//Found Filiale in barcode but my location null
} else if (getfilno.getCount()== 1 && filno_bymyloc == null) {
removeItemDB();
Log.d(anmelden.class.getName(),"count 1, filnobymyloc==null" );
//No Filiale in barcode but found Filiale with my location
} else if (getfilno.getCount()== 0 && filno.matches(filno_bymyloc) ) {
removeItemDB();
Log.d(anmelden.class.getName(), "No Filiale in barcode, Found Filiale with my location");
//No GPS position
} else if (latout_ausladen.matches("0.0")){
removeItemDB();
Log.d(anmelden.class.getName(), "No GPS position found");
//Falsche Filiale
} else {
//Play sound three times
mediaPlayer(getApplicationContext(), sound3);
//Remove item from ListView
myDb.ausladen("\"" + containerbarcode_ausladen_string + "\"", formateddate_ausladen, "scan",
latout_ausladen,lonout_ausladen, "ausgeladen","notime",
lkwnummer_ausladen);
//Refresh ListView
loadListView();
//Set barcode to empty
etxt_ausladen_barcode.setText("");
Log.d(anmelden.class.getName(),"Falsche Filiale");
}
}
感谢所有人阅读和帮助:)
答案 0 :(得分:0)
1)您应该使用Android Log而不是System.out.print()。例如 - Log.d("Test", "Barcode: " + containerbarcode_ausladen_string);
2)不确定为什么你的Toast没有出现 - 你能设置一个断点并确保它击中它并且它在主线程上吗?如果它不在主线程上,则应将其发布到主线程。
答案 1 :(得分:0)
要记录您的应用,您必须使用Android Log而不是System.out.print()。它具有不同的覆盖范围,例如"调试","警告"或"错误"。然后,您可以过滤此级别,并仅查看要使用Logcat查看的信息。
例如,如果您想记录错误,可以简单地
Log.e("YourTag", "Put your message error here");
' .e'表示您正在记录错误(使用' .w'用于警告或' .d'用于调试消息等)。 第一个参数是标签,您也可以在Android Monitor Logcat上按此字段进行过滤。
第二个参数是您要记录的消息。 您可以在此处使用Android Studio Logcat进行日志记录的基本文档:https://developer.android.com/studio/debug/am-logcat.html
只能在主线程上使用Toast,因此从其他线程调用它,就像AsyncTask一样,不会显示任何内容。然而,使用Toast消息进行日志记录并不是一个好习惯。
我希望它有所帮助!