Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 禁用带有首选项的声音无法正常工作_Java_Android - Fatal编程技术网

Java 禁用带有首选项的声音无法正常工作

Java 禁用带有首选项的声音无法正常工作,java,android,Java,Android,我有一个偏好活动,其中只有一个设置,声音打开或关闭,它在我的所有游戏中都可以正常工作,除了在我的主菜单中,我仍然可以听到按钮点击的声音。但是,当我退出游戏并重新开始后,我的声音就消失了。代码在我所有的活动中都是完全相同的,但在游戏重新启动之前,它对主活动不起作用。这是怎么回事?显然,代码正在运行,但有些地方不正确。无论如何,这是代码,不是全部,只是与此问题相关的代码…只有一个按钮,用于退出…下面,以防万一,我将发布整个活动代码: public boolean music; MediaPlayer

我有一个偏好活动,其中只有一个设置,声音打开或关闭,它在我的所有游戏中都可以正常工作,除了在我的主菜单中,我仍然可以听到按钮点击的声音。但是,当我退出游戏并重新开始后,我的声音就消失了。代码在我所有的活动中都是完全相同的,但在游戏重新启动之前,它对主活动不起作用。这是怎么回事?显然,代码正在运行,但有些地方不正确。无论如何,这是代码,不是全部,只是与此问题相关的代码…只有一个按钮,用于退出…下面,以防万一,我将发布整个活动代码:

public boolean music;
MediaPlayer buttonClicks;

SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        music = getPrefs.getBoolean("checkbox", true);

buttonClicks = MediaPlayer.create(this, R.raw.click);

dugme5.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                if(music == true){
                    buttonBack.start();
                        }
                finish();

            }
        });
全班:

public class Menu extends SwarmActivity implements OnClickListener{

    private boolean isNetworkConnected() {
          ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
          NetworkInfo ni = cm.getActiveNetworkInfo();
          if (ni == null) {
           // There are no active networks.
           return false;
          } else
           return true;
         }


    MediaPlayer buttonClicks;
    MediaPlayer buttonBack;
    Button dugme1, dugme2, dugme3, dugme4, dugme5, dugme6;
    TextView tvKviz;
    public boolean music;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        music = getPrefs.getBoolean("checkbox", true);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.menu);

        //if ( Swarm.isEnabled() ) {
        Swarm.init(this, 4583, "e8398d93819da3d6d5f7d13f5b5a0deb");
        //}

        addListenerOnButton();

        boolean firstrun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true);
        if (!firstrun){
            Intent swarm = new Intent("rs.androidaplikacijekvizopstekulture.SWARMPOPUP");
            startActivity(swarm);
        // Save the state
        getSharedPreferences("PREFERENCE", MODE_PRIVATE)
            .edit()
            .putBoolean("firstrun", false)
            .commit();
        }

        if ((!firstrun)&&(!isNetworkConnected())){
            Intent netPopup = new Intent("rs.androidaplikacijekvizopstekulture.NETPOPUP");
            startActivity(netPopup);
        }
    }





    private void addListenerOnButton() {
        Typeface naslov = Typeface.createFromAsset(getAssets(), "Lobster.ttf");
        Typeface dugmad = Typeface.createFromAsset(getAssets(), "Bebas.ttf");
        buttonClicks = MediaPlayer.create(this, R.raw.click);
        buttonBack = MediaPlayer.create(this, R.raw.button31);
        tvKviz = (TextView) findViewById(R.id.tvKviz);
        dugme1 = (Button) findViewById(R.id.bStart);
        dugme2 = (Button) findViewById(R.id.bPravila);
        dugme3 = (Button) findViewById(R.id.bTopScores);
        dugme4 = (Button) findViewById(R.id.bPodesavanja);
        dugme5 = (Button) findViewById(R.id.bIzlaz);
        dugme6 = (Button) findViewById(R.id.bKontakt);
        dugme1.setTypeface(dugmad);
        dugme2.setTypeface(dugmad);
        dugme3.setTypeface(dugmad);
        dugme4.setTypeface(dugmad);
        dugme5.setTypeface(dugmad);
        dugme6.setTypeface(dugmad);

        tvKviz.setTypeface(naslov);

        dugme1.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                if(music == true){
            buttonClicks.start();
                }
            startActivity(new Intent("rs.androidaplikacijekvizopstekulture.IZBOR"));

            }
        });
        dugme2.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                if(music == true){
                    buttonClicks.start();
                    Intent pref = new Intent("rs.androidaplikacijekvizopstekulture.PRAVILA");
                    startActivity(pref);
                        }
            }

        });

        dugme3.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                if(music == true){
                    buttonClicks.start();
                        }
                Swarm.showLeaderboards();
            }
        });

        dugme4.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                if(music == true){
                    buttonClicks.start();
                        }
                Intent pref = new Intent("rs.androidaplikacijekvizopstekulture.PREFS");
                startActivity(pref);

            }
        });
        dugme5.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                if(music == true){
                    buttonBack.start();
                        }
                finish();

            }
        });
        dugme6.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                if(music == true){
                    buttonClicks.start();
                        }
                Intent email = new Intent(Intent.ACTION_SEND);

                email.putExtra(Intent.EXTRA_EMAIL, new String[] { "marjanbazalac@gmail.com" });
                // email.putExtra(Intent.EXTRA_CC, new String[]{ to});
                // email.putExtra(Intent.EXTRA_BCC, new String[]{to});
                email.putExtra(Intent.EXTRA_SUBJECT, "subject...");
                email.putExtra(Intent.EXTRA_TEXT, "poruka...");

                // need this to prompts email client only
                email.setType("message/rfc822");

                try {
                    startActivity(Intent.createChooser(email, "Send mail..."));
                } catch (android.content.ActivityNotFoundException ex) {
                    Toast.makeText(Menu.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
                }

            }
        });

    }


    public boolean onCreateOptionsMenu(android.view.Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    public boolean onOptionsItemSelected(MenuItem item){
        switch (item.getItemId()){
        case R.id.menu_contact:
            Intent email = new Intent(Intent.ACTION_SEND);

            email.putExtra(Intent.EXTRA_EMAIL, new String[] { "marjanbazalac@gmail.com" });
            // email.putExtra(Intent.EXTRA_CC, new String[]{ to});
            // email.putExtra(Intent.EXTRA_BCC, new String[]{to});
            email.putExtra(Intent.EXTRA_SUBJECT, "subject...");
            email.putExtra(Intent.EXTRA_TEXT, "poruka...");

            // need this to prompts email client only
            email.setType("message/rfc822");

            try {
                startActivity(Intent.createChooser(email, "Send mail..."));
            } catch (android.content.ActivityNotFoundException ex) {
                Toast.makeText(Menu.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
            }
            return true;
        }
        return false;
    }

    public void onClick(View v) {
        // TODO Auto-generated method stub

    }

}

据我所知,您只在创建活动时在
onCreate()
中检查首选项。这就是为什么在游戏重新启动之前它不会改变

如果您希望它在每次单击按钮时都进行检查,只需编写一个简单的函数:

public boolean isMusicEnabled()
{
    SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    return getPrefs.getBoolean("checkbox", true);
}
现在,您可以使用
if(isMusicEnabled())
来代替在每个侦听器中检查
if(music==true)


或者,将复选框移动到
onResume()
,以便在从首选项活动返回菜单时调用它。

您将在活动的
onCreate()
方法中获得首选项。除非您在某处
finish()
您的主要活动,否则它将保持“已创建”,直到该活动因其他原因完成或被系统关闭


如果您获得首选项并在
onStart()
onRestart()
中更新您的声音设置,我想您会发现它可以按预期工作。

这就像一个魔咒!我不认为当我从prefs返回时,我的活动已经创建,这就是为什么不工作的原因。谢谢,伙计。我也会试试这个解决方案,但我现在用了另一个,因为它更快。:)谢谢。