簡體   English   中英

字符串語句從switch語句返回null

[英]String statement returning null from switch statement

我目前正在使用一個Android應用程序,該應用程序允許您在VideoView中觀看流式視頻。 我有一種方法,允許您通過switch語句選擇四個流之一。 那工作正常,並且代碼如下:

public void playStream(int position) {
    switch (position) {
        case 0:
            streamOn = true;
            streamPos = 0;
            logString = "M";
            posSelected = "0";
            break;
        case 1:
            streamOn = true;
            streamPos = 1;
            logString = "J";
            posSelected = "1";
            break;
        case 2:
            streamOn = true;
            streamPos = 2;
            logString = "B";
            posSelected = "2";
            break;
        case 3:
            streamOn = true;
            streamPos = 3;
            logString = "N";
            posSelected = "3";
            break;
        default:
            break;
    }
    checkStreamLink(position);

    Log.wtf(logString, posSelected);
    Log.wtf(logString, streamURL);
}

無法正常工作的是,在此用於選擇流的方法中,我調用了另一個運行線程的方法( checkStreamLink(); )。 根據您選擇的流,該線程將調用另一個方法,該方法打開一個網頁,讀取一行文本,然后將該文本設置為String streamURL 這兩種方法的代碼如下:

public void checkStreamLink(final int position) {
    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                switch (position) {
                    case 0:
                        streamURL = getStreamLink("LINK 0 GOES HERE");
                        break;
                    case 1:
                        streamURL = getStreamLink("LINK 1 GOES HERE");
                        break;
                    case 2:
                        streamURL = getStreamLink("LINK 2 GOES HERE");
                        break;
                    case 3:
                        streamURL = getStreamLink("LINK 3 GOES HERE");
                        break;
                    default:
                        break;
                }
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    thread.start();
}


public String getStreamLink (String textSource) {
    URL streamURL;
    String errorParsingURL = "ERROR PARSING URL";
    try {
        streamURL = new URL(textSource);
        BufferedReader bufferReader = new BufferedReader(new InputStreamReader(streamURL.openStream()));
        String StringBuffer;
        String stringText = "";
        while ((StringBuffer = bufferReader.readLine()) != null) {
            stringText += StringBuffer;
        }
        bufferReader.close();
        return stringText;
    }
    catch (MalformedURLException e) {
        e.printStackTrace();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    return errorParsingURL;
}

我遇到的問題是,如我包含的Log語句所示, String streamURL首次使用時返回null。 此后每次選擇流時, String streamURL返回上一次選擇流時應該收到的文本。 我似乎無法弄清楚為什么會這樣,我將不勝感激。

您得到的是空值,因為在打印結果后, getStreamLink將返回其值。 getStreamLink方法的末尾打印結果日志消息,以查看返回的實際值,並在此時調用任何其他功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM