Log或Toast doesent工作Android Studio

时间:2016-11-24 14:52:00

标签: java android logging toast

我正在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");
    }
}

感谢所有人阅读和帮助:)

2 个答案:

答案 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消息进行日志记录并不是一个好习惯。

我希望它有所帮助!