Переход между двумя фрагментами со звуком при нажатии кнопки - PullRequest
0 голосов
/ 18 декабря 2018

Два фрагмента с кнопкой в ​​каждом.Если я нажимаю кнопку, содержащую первый фрагмент, она воспроизводит музыку и переходит ко второму фрагменту, и если я нажимаю кнопку, показанную во втором фрагменте, первый фрагмент снова появляется, начиная второй фрагмент музыки и останавливая первый фрагмент.Я предоставил здесь только коды здесь.Приложение успешно устанавливается как на AVD, так и на реальном устройстве, но звуки не воспроизводятся.Пожалуйста, помогите ..

MainActivity:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();

        fragmentTransaction.add(R.id.fragmentContainer, new Fragment1());
        fragmentTransaction.commit();
    }
}

Первый фрагмент:

import android.content.Context;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;


public class Fragment1 extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //return super.onCreateView(inflater, container, savedInstanceState);
        View view = inflater.inflate(R.layout.fragment1,container,false);

        final Button buttonFragment1 = (Button)view.findViewById(R.id.buttonFragmentId1);
        final MediaPlayer mp1 = MediaPlayer.create(getContext(), R.raw.a);
        buttonFragment1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction ft = getFragmentManager().beginTransaction();
                ft.replace(R.id.fragmentContainer, new Fragment2());
                ft.commit();

                if(mp1.isPlaying()==true){
                    mp1.pause();
                    mp1.seekTo(0);
                }

            }
        });

        return view;
    }
}

Второй фрагмент:

import android.content.Context;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class Fragment2 extends Fragment {
    MediaPlayer mp2 = new MediaPlayer();

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //return super.onCreateView(inflater, container, savedInstanceState);

        View view = inflater.inflate(R.layout.fragment2,container,false);
        final Button buttonFragment2 = (Button)view.findViewById(R.id.buttonFragmentId2);
        final MediaPlayer mp2 = MediaPlayer.create(getContext(), R.raw.a);
        buttonFragment2.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
                FragmentTransaction ft = getFragmentManager().beginTransaction();
                ft.replace(R.id.fragmentContainer, new Fragment1());
                ft.commit();

             if(mp2.isPlaying()==true){
                 mp2.pause();
                 mp2.seekTo(0);
             }
            }
        });
        return view;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...