2017-12-24 9 views
0

Ich möchte eine sehr einfache App erstellen, die eine Liste von Liedern zeigt und beim Klicken auf Lied öffnet eine neue Aktivität, um die spielende Statue des Liedes zu zeigen, ich habe fast alles aber erstellt Wenn ich auf "Play" klicke, spielt es nicht. Können Sie mir bitte sagen, was ich vermisse?Pass Songs von Arraylist zu einer anderen Aktivität

erste Aktivität:

enter code here 
    private Button buttonPlayStop; 
    private MediaPlayer mMediaPlayer; 
    private Context context; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.listview); 

    final ArrayList<Songs> songslist = new ArrayList<Songs>(); 
    songslist.add(new Songs("hhhhh", "cHU CHU ", R.drawable.mimi, R.raw.hhh)); 
    songslist.add(new Songs("hhhh", "cHU CHU ", R.drawable.jes1s, R.raw.hhh)); 
    songslist.add(new Songs("hhhh", "cHU CHU ", R.drawable.matt, R.raw.hhh)); 
    songslist.add(new Songs("hhhhh", "cHU CHU ", R.drawable.freind, R.raw.hhh)); 
    songslist.add(new Songs("hhhhh", "cHU CHU ", R.drawable.joe, R.raw.hhh)); 
    songslist.add(new Songs("hhhhh ", "cHU CHU ", R.drawable.bada, R.raw.hhh)); 
    songslist.add(new Songs("hhhhh", "cHU CHU ", R.drawable.abby, R.raw.hhh)); 

    final SongsAdapter adapter = new SongsAdapter(this, songslist); 

    final ListView listView = (ListView) findViewById(R.id.listview); 

    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
      Songs song = songslist.get(position); 

      Intent anotherActivityIntent = new Intent(FunActivity.this, playingActivity.class); 
      anotherActivityIntent.putExtra("songs",songslist); 
      startActivity(anotherActivityIntent); 

     } 
    }); 

Spielen Aktivität:

enter code here 
    public class playingActivity extends FunActivity { 
    private MediaPlayer mMediaPlayer; 
    private Button buttonPlayStop; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_playing); 
    ArrayList<Songs> songs =     getIntent().getParcelableArrayListExtra("Songs"); 
    buttonPlayStop = (Button)findViewById(R.id.ButtonPlayStop); 
    buttonPlayStop.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      mMediaPlayer.start(); 
     } 
    }); 

    } 
+0

1. In der ersten Aktivität haben Sie eine Zeile 'Songs song = songslist.get (position);' um einen Song zu erhalten, aber versuchen, die ursprüngliche Liste mit 'anotherActivityIntent.putExtra (" songs ", songslist) zu senden;' 2. In der Spielaktivität hast du 'ArrayList songs = ...', scheint aber keinen Platz für 'songs' zu haben. Welche möchten Sie senden (Liste der Songs) oder (ein einzelnes Lied)? – Toris

+0

...was ich tun möchte, ist, wenn der Benutzer auf einen beliebigen Song in der Listenansicht klickt, zeigt eine andere Aktivität und spielt den gewählten Song –

Antwort

1

Nicht getestet, aber ..

zu werfen brauchen

Erste Aktivität:

Änderung
anotherActivityIntent.putExtra("songs",songslist);

zu
anotherActivityIntent.putExtra("songs",song);

Spiel Aktivität:

ändern
ArrayList<Songs> songs = getIntent().getParcelableArrayListExtra("Songs");

zu

Songs songs = getIntent().getParcelableExtra("songs"); 

Und Sie einige Codes hinzufügen müssen in Spielen Aktivität
- Übersetzen Songs, um es Weg ist (vielleicht besser, den Weg in Songs Klasse haben)
- Stellen Sie den Pfad zu mMediaPlayer (Siehe MediaPlayer.setDataSource(string))
- Call mMediaPlayer. prepare()
- Dann rufen Sie mMediaPlayer.start()

NB: mMediaPlayer.start() in OnClickListener aufrufen. onClick(), die in Ihrem Code auf ButtonPlayStop gesetzt ist, scheint ein Tippfehler zu sein.

Weitere Informationen finden Sie unter MediaPlayer.StateDiagram oder MediaPlayer developer guide.

0

try

anotherActivityIntent.putExtra("songs",songslist); 

Um

anotherActivityIntent.putParcelableArrayListExtra("songs",songslist); 
zu ändern 210

Auch Schlüsselnamen falsch verwenden ändern songs & Songs für beide Seiten gleiche machen

ArrayList<Songs> songs = getIntent().getParcelableArrayListExtra("songs");      

Sie auch mMediaPlayer Objekt vor Onclick lik dieses

mMediaPlayer = (MediaPlayer)findViewById(You media player id); 
+0

Ich änderte es und es hörte immer noch auf, wenn ich auf die Schaltfläche klicke: '( –

+0

Siehe meine aktualisierte Antwort – Munir

+0

oh yeah, aber das hat auch nicht funktioniert ... :( –

Verwandte Themen