Hier kannst du die notwendigen Dateien herunterladen, einfach per Import als Projekt hinzufügen - als RAR-Archiv gepackt mit dem Passwort: ez6nxhab
https://drive.google.com/file/…JMzVGSk0/view?usp=sharing
Hier erfolgt nur eine kleine Erklärung!
So. Ich habe mir das fix aus deiner Vorlage selbst zusammengebastelt - es funktionert bei mir einwandfrei.
public class MainActivity extends ActionBarActivity implements View.OnClickListener {
ImageView bild;
Button bild_laden;
MediaPlayer mediaPlayer;
int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer = MediaPlayer.create(this, R.raw.theme_1);
mediaPlayer.start();
bild = (ImageView) findViewById((R.id.imageView));
bild_laden = (Button) findViewById(R.id.bild_laden);
bild_laden.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (i) {
case 0:
bild.setImageResource(R.drawable.child);
i++;
break;
// usw.
}
}
Alles anzeigen
Anstelle der ganzen if-Abfragen, solltest du ruhig switch-case nutzen. Dies funktioniert so:
switch (NAME_DER_VARIABLE) {
case ERSTER_WERT:
//Anweisungen, Anweisungen, ...
break;
//raus aus dem switch, damit er die
//nachfolgenden Anweisungen (andere cases)
//nicht ausführt
case ZWEITER_WERT:
break;
// und so weiter
default:
}
Alles anzeigen
Je nachdem, was die Funktion verlangt, in der switch-case genutzt wird, wird anstelle des "breaks" ein "return WERT" genutzt. In diesem Fall gibt es keinen Rückgabewert (void).
Das "default" beschreibt, was passieren soll, wenn keiner der o.g. Fälle zutrifft - hier in diesem Fall kannst du es einfach hinschreiben oder weglassen - bei größeren Projekten sollte man bei der Nutzung dessen einen Ausgangspunkt setzen, der allgemein gehalten sein sollte.
Momentan spielt er nur die Musik nach Start der App bzw. nach Aufruf der Activity ab. Um einen neuen Song zu starten, reicht es auch aus Folgendes aufzurufen:
mediaPlayer = MediaPlayer.create(this, R.raw.theme_2);
// neuen Song gewählt
mediaPlayer.setLooping(true);
// dein Loop :P
mediaPlayer.start();
// Start des neuen Songs - der davor wird automatisch abgebrochen
Etwas Einfacheres (Logischeres vielleicht auch) habe ich nicht finden können. Oder du nutzt weiterhin dein setNextMediaPlayer:
mediaPlayer.setNextMediaPlayer(MediaPlayer.create(this, R.raw.theme_2)); //oder du kreierst einen neuen MediaPlayer, wie du es bei dir gemacht hast
Du solltest Bezeichnungen in der "strings.xml" festlegen, so z.B. auch die Bezeichnung des Buttons.
strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">MediaPlayer</string>
<string name="next_pic">Nächstes Bild</string>
<string name="action_settings">Settings</string>
</resources>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ImageView
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"
android:layout_centerHorizontal="true"
android:layout_above="@+id/bild_laden"
android:layout_alignParentTop="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next_pic"
android:id="@+id/bild_laden"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Alles anzeigen
___________________________________________
Im Endeffekt glaube ich, dass es an deiner Initialisierung zweier MediaPlayer liegt - dazu kann ich aber nicht viel sagen