如何将str变量(第125行)从AsyncTask传递给onCreate,即youTubePlayer.loadVideo(myStr); (string56)? 请在评论中写相同的代码,但只能进行必要的更正
public class MainActivity extends YouTubeBaseActivity {
public String titleList;
YouTubePlayerView player;
private final String API_KEY = "xxxxxxxxxx";
public String VIDEO_CODE = "xxxxxxxxx";
// благодоря этому классу мы будет разбирать данные на куски
public Elements title;
// то в чем будем хранить данные пока не передадим адаптеру
// Listview Adapter для вывода данных
private ArrayAdapter<String> adapter;
// List view
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
player = (YouTubePlayerView)findViewById(R.id.player);
lv = (ListView) findViewById(R.id.listView1);
// запрос к нашему отдельному поток на выборку данных
new NewThread().execute();
// Добавляем данные для ListView
player.initialize(API_KEY, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
if (!b) {
youTubePlayer.loadVideo(myStr);
youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Toast toast = Toast.makeText(getApplicationContext(),
youTubeInitializationResult.toString(), Toast.LENGTH_SHORT);
toast.show();
}
});
// определение данных
}
/** А вот и внутрений класс который делает запросы, если вы не читали статьи у меня в блоге про отдельные
* потоки советую почитать */
public class NewThread extends AsyncTask<String, Void, String> {
// Метод выполняющий запрос в фоне, в версиях выше 4 андроида, запросы в главном потоке выполнять
// нельзя, поэтому все что вам нужно выполнять - выносите в отдельный тред
@Override
protected String doInBackground(String... arg) {
// класс который захватывает страницу
Document doc;
Random r = new Random();
//https://www.google.ru/search?q=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82&newwindow=1&dcr=0&source=lnt&tbs=qdr:h - за последние 24 часа
String eng = "abcdefghijklmnopqrstuvwxyz";
String dig = "0123456789-_";
String sum = eng + eng.toUpperCase() + dig;
char a = sum.charAt(r.nextInt(sum.length()) );
char b = sum.charAt(r.nextInt(sum.length()) );
char c = sum.charAt(r.nextInt(sum.length()) );
char d = sum.charAt(r.nextInt(sum.length()) );
char k = sum.charAt(r.nextInt(sum.length()) );
String aS = Character.toString(a);
String bS = Character.toString(b);
String cS = Character.toString(c);
String dS = Character.toString(d);
String kS = Character.toString(k);
String fullname =aS + bS + cS + dS + kS;
String url_get_page = "https://www.google.ru/search?newwindow=1&dcr=0&source=hp&ei=jZbMWqbyHtPX6QST_4OQCQ&q=youtube+" + fullname;
try {
// определяем откуда будем воровать данные
doc = Jsoup.connect(url_get_page).get();
// задаем с какого места, я выбрал заголовке статей
title = doc.select("a");
String linkHref = title.attr("href");
String linkInnerH = title.html();
// чистим наш аррей лист для того что бы заполнить
// и в цикле захватываем все данные какие есть на странице
} catch (IOException e) {
e.printStackTrace();
}
// ничего не возвращаем потому что я так захотел)
String lol = title.toString();
int beginning = lol.indexOf(".com/watch?v=");;
char[] link = new char[50];
try {
lol.getChars(beginning + 13, beginning + 24, link, 0);
} catch (Exception ex) {
}
String myStr = new String(link);
return null;
}
@Override
protected void onPostExecute(String result) {
// после запроса обновляем листвью
}
}
}
如何将str变量(第125行)从AsyncTask传递给onCreate,即youTubePlayer.loadVideo(myStr); (string56)? 请在评论中写相同的代码,但只能进行必要的更正