В моей основной деятельности есть фоновая музыка, и я хочу остановить ее, когда смогу, с помощью флажка. У меня уже есть коды, чтобы установить фоновую музыку в основную деятельность, и она отлично работает. Проблема в том, что я хочу остановить определенную песню из другого действия с помощью CheckBox. Я настроил флажок, однако он не работает. Некоторая помощь действительно оценена.Чтобы остановить фоновый звук от 1-го действия до другого, используя флажок?
PD: Общение между этими двумя видами деятельности хорошо работает. Это флажок, который не работает
Вот мои используемые коды.
MainActivity.java
`
public class MainActivity extends Activity implements View.OnClickListener {
MediaPlayer bkgrdmsc;
private int lmusic_checked = SettingsActivity.music_checked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (lmusic_checked == 0){
bkgrdmsc = MediaPlayer.create(MainActivity.this, R.raw.backgroundmusic);
bkgrdmsc.setLooping(true);
bkgrdmsc.start();
}
@Override
protected void onPause() {
if (lmusic_checked == 0){
bkgrdmsc.release();
}
SettingsActivity.music_checked =0;
super.onPause();
bkgrdmsc.release();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//inflate the menu; this adds items to the action bar if this is present
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
Intent s_intent = new Intent(this, SettingsActivity.class);
startActivity(s_intent);
return true;
}
else if (id == R.id.logo_home){
Intent t_intent = new Intent(this, Twitter.class);
startActivity(t_intent);
return true;
}
return super.onOptionsItemSelected(item);
}
activity_settings.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
<TextView
android:layout_width="271dp"
android:layout_height="77dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/c_general"
android:id="@+id/textView"
android:layout_gravity="center_vertical"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="57dp"
android:textSize="26dp" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/turn_on_music"
android:id="@+id/CheckBox"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:checked="false"
android:singleLine="false"
android:textColor="#000000" />
</RelativeLayout>
SettingsActivity.java
package com.example.json.publicomidas;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.CheckBox;
import android.widget.CompoundButton;
public class SettingsActivity extends Activity {
public static int music_checked= 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.action_settings);
music_off();
}
public void music_off(){
CheckBox checkBox1 = (CheckBox) findViewById(R.id.CheckBox);
checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView.isChecked()) {
music_checked = 1;
} else {
music_checked = 0;
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//inflate the menu; this adds items to the action bar if this is present
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_settings, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.home) {
Intent s_intent = new Intent(this, MainActivity.class);
startActivity(s_intent);
return true;
}
return super.onOptionsItemSelected(item);
}
}
Kiril, я использовал статическое поле на '' 'music_checked = 0;' '' Почему это, потому что я хочу контролировать, когда музыка играет или нет, и даже если я не хочу, чтобы музыка играла. Я устанавливаю '' 'music_checked = 1;' '' – Jason
@ Джейсон, взгляните на мой обновленный ответ, пожалуйста. Не стесняйтесь спрашивать, есть ли что-то непонятное :) –
@ Джейсон, если бы мой ответ помог вам, могу я попросить вас принять его как правильный :) –