Странная ошибка - без первого нажатия не работает - PullRequest
0 голосов
/ 18 февраля 2019

Это аудиоплеер

Как это выглядит: Нажмите и посмотрите, как это на самом деле выглядит:)

Проблема в следующем:

  • Когда я открываю это упражнение и нажимаю кнопку воспроизведения случайной песни -> она воспроизводится.Я могу вернуться, пойти снова, сыграть что-нибудь еще, остановиться, вернуться, снова, играть ... Работает

  • Но когда я открываю это действие в первый раз и не нажимаюлюбая кнопка воспроизведения ... но вместо этого я возвращаюсь (кнопка назад) и снова возвращаюсь к этому действию, оно не будет работать.Нажатие на любую кнопку теперь вызовет реакцию (тост, щелчок, кнопка воспроизведения исчезнут и появится вращающийся круг, сигнализирующий, что он ... загружается?), Но музыка не будет присутствовать.Выбор другой песни тоже ничего не даст.Возвращаясь назад и снова, это занятие -> ничего, не будет работать, просто не будет.

The toast in onClick works always, and always the right way. So...

Работает так: Когда вы первый разчтобы открыть это занятие, нужно хотя бы нажать одну кнопку на песне!Вы должны!Потому что, если ты не сделаешь этого, я не буду работать, несмотря ни на что.Хорошо, я буду работать, только если вы выключите и снова запустите приложение.

Как это возможно?Особенно, когда нажатие работает всегда и работает должным образом?

Как нажатие в первый раз, когда видение деятельности важно, как ад.Но это всего лишь

jcplayerView.kill();
                ArrayList<JcAudio> jcAudios = new ArrayList<>();
                jcAudios.add(JcAudio.createFromURL(
                        (String) podcasts.keySet().toArray()[position],
                        (String) podcasts.values().toArray()[position]
                ));
                jcplayerView.initPlaylist(jcAudios, null);
                jcplayerView.continueAudio();

И здесь нет ничего особенного для меня, чтобы понять, почему это так работает.

package com.sherdle.universal;

import android.arch.lifecycle.ViewModel;
import android.arch.lifecycle.ViewModelProvider;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Context;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.JsonReader;
import android.view.ActionMode;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.arges.sepan.argmusicplayer.Enums.AudioType;
import com.arges.sepan.argmusicplayer.IndependentClasses.ArgAudio;
import com.arges.sepan.argmusicplayer.PlayerViews.ArgPlayerFullScreenView;
import com.arges.sepan.argmusicplayer.PlayerViews.ArgPlayerLargeView;
import com.arges.sepan.argmusicplayer.PlayerViews.ArgPlayerSmallView;
import com.example.jean.jcplayer.model.JcAudio;
import com.example.jean.jcplayer.view.JcPlayerView;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import javax.net.ssl.HttpsURLConnection;

public class Argplayer2Activity extends AppCompatActivity {

    protected JcPlayerView jcplayerView;
    protected JcPlayerView jcplayerView2;
    public HashMap<String, String> podcasts;
    public static int launchesTimes = 1;
    public static HashMap<String, String> podcasts2;
    public Context context;

    protected void onCreate(Bundle savedInstanceState) {

        context = this;

        super.onCreate(savedInstanceState);
        setContentView(R.layout.argplayer2);
        podcasts = new HashMap<>();


        jcplayerView = (JcPlayerView) findViewById(R.id.jcplayer);

        if (launchesTimes > 1) {
            ViewGroup parent = (ViewGroup) jcplayerView.getParent();
            int indexOldPlayer = parent.indexOfChild(jcplayerView);
            parent.removeView(jcplayerView);
            jcplayerView2 = MeTest.jcPlayerView;
            ((ViewGroup) jcplayerView2.getParent()).removeView(jcplayerView2);
            parent.addView(jcplayerView2, indexOldPlayer);
            jcplayerView = jcplayerView2;
        }


        if (launchesTimes == launchesTimes) {
            AsyncTask.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        String user = getString(R.string.podcast_user);
                        String server = getString(R.string.podcast_server);
                        URL fastcastProxy = new URL("https://xxxxxxxxxxxx/proxy.php?user=" + user + "&server=" + server);
                        HttpsURLConnection connection = (HttpsURLConnection) fastcastProxy.openConnection();
                        if (connection.getResponseCode() == 200) {
                            InputStream body = connection.getInputStream();
                            InputStreamReader bodyReader = new InputStreamReader(body, "UTF-8");
                            JsonReader jsonReader = new JsonReader(bodyReader);
                            jsonReader.beginObject();
                            while (jsonReader.hasNext()) {
                                String key = jsonReader.nextName();
                                String value = jsonReader.nextString();
                                podcasts.put(key, value);
                            }
                            jsonReader.close();
                            connection.disconnect();

                            runOnUiThread(new Runnable() {

                                @Override
                                public void run() {
                                    ListView podcastlistView = (ListView) findViewById(R.id.podcastListView);
                                    PodcastAdapter podcastAdapter = new PodcastAdapter();
                                    podcastlistView.setAdapter(podcastAdapter);
                                }
                            });

                        }
                    } catch (java.io.IOException e) {
                        e.printStackTrace();
                    }
                }
            });
            podcasts2 = podcasts;
        } else {
            podcasts = podcasts2;
            ListView podcastlistView = (ListView) findViewById(R.id.podcastListView);
            PodcastAdapter podcastAdapter = new PodcastAdapter();
            podcastlistView.setAdapter(podcastAdapter);
        }

        launchesTimes++;
    }

    @Override
    protected void onDestroy() {
        MeTest.setString("destroyed");
        MeTest.jcPlayerView = jcplayerView;
        super.onDestroy();
    }


    public class PodcastAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return podcasts.size();
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

        @Override
        public long getItemId(int i) {
            return 0;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            view = getLayoutInflater().inflate(R.layout.podcast_layout, null);

            TextView title = (TextView) view.findViewById(R.id.podcastTitle);
            ImageView playButton = (ImageView) view.findViewById(R.id.playButtonplay);

            title.setText((String) podcasts.keySet().toArray()[i]);
            playButton.setOnClickListener(new PlayOnClickEventListener(i));

            return view;
        }

        public class PlayOnClickEventListener implements View.OnClickListener {
            int position;

            public PlayOnClickEventListener(int position) {
                this.position = position;
            }

            @Override
            public void onClick(View view) {
                jcplayerView.kill();
                ArrayList<JcAudio> jcAudios = new ArrayList<>();
                jcAudios.add(JcAudio.createFromURL(
                        (String) podcasts.keySet().toArray()[position],
                        (String) podcasts.values().toArray()[position]
                ));
                jcplayerView.initPlaylist(jcAudios, null);
                jcplayerView.continueAudio();

                Toast.makeText(context, (String) podcasts.keySet().toArray()[position], Toast.LENGTH_LONG).show();

            }

        }

    }

}

Есть мысли?Мнения?Предложения?Просьба помочь: D.

...