如何将str变量(第125行)从AsyncTask传递给onCreate,即youTubePlayer.loadVideo(myStr); (string56)?

时间:2018-04-12 12:57:50

标签: android-asynctask

如何将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)? 请在评论中写相同的代码,但只能进行必要的更正

0 个答案:

没有答案