2014-09-16 6 views
0

Привет, у меня небольшая проблема с андроид-студией.Если оператор не возвращает строку

Я сделал простой код, который проверяет, вставил ли пользователь строку с http: // если нет, то добавьте http: // в строку.

Вот часть моего кода:

if (!host.contains("http://")) { 
     String playlistUrl = "http://" + host + "/test.m3u"; 
    }else{ 
     String playlistUrl = host + "/test.m3u"; 
    }     
     intent.setData(Uri.parse(playlistUrl)); 

Android Студия падает мне ошибку на последней строке (не может разрешить символ playlistUrl)

  intent.setData(Uri.parse(playlistUrl)); 

Но почему? Если оператор должен возвращать строку playlistUrl ....

+1

Ваша строка 'String' находится внутри блоков' if'. Объявите его за пределами 'if' и установите его значение внутри' if'. – lurker

ответ

2

Вы создаете переменную внутри инструкции if ... else - это означает, что она не будет видна снаружи. Вы можете реализовать это следующим образом:

String playlistUrl; 
if (...) { 
    playlistUrl = ...; 
} 
else { 
    playlistUrl = ...; 
} 
0

Declare playlistUrl вне если-то еще конструкта:

String playlistUrl; 
if (!host.contains("http://")) { 
    playlistUrl = "http://" + host + "/test.m3u"; 
} else{ 
    playlistUrl = host + "/test.m3u"; 
}     
intent.setData(Uri.parse(playlistUrl)); 
0

вам нужно сделать это таким образом вы не используя ту же переменную путем объявления его

String playlistUrl = ""; 
if (!host.contains("http://")) { 
    "http://" + host + "/test.m3u"; 
}else{ 
    playlistUrl = host + "/test.m3u"; 
}     
    intent.setData(Uri.parse(playlistUrl)); 
0

Вы должны объявить и создать экземпляр уаг playListUrl вне если заявление. Причиной этого является то, что компилятор переводит только байт-код без оценки выражений.

Смежные вопросы