【问题标题】:Toggle button is not working when checking again再次检查时切换按钮不起作用
【发布时间】:2017-10-24 19:09:57
【问题描述】:

此代码在一段时间后无法正常工作。单击它后它会停止音乐,但再次单击它后它不会再次启动音乐。

ToggleButton sound;
MediaPlayer sip;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    sound = (ToggleButton) findViewById(R.id.Sound1);
    sip = MediaPlayer.create(Naruto.this, R.raw.sip2);
    sip.start();
    sound.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
            if (sound.isChecked() == true) {
                sip.start();
            } else {
                sip.start();
            }
        }
    });
}

【问题讨论】:

标签: android togglebutton


【解决方案1】:

试试下面的代码;

     sound.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                Boolean switchState = holder.simpleSwitch.isChecked();

                if (switchState==true)
                {
                   sip.start();
                }
                else
                {
                   sip.stop();
                }
            }
        });

【讨论】:

    【解决方案2】:

    MediaPlayer 需要配置。试试这个:

    sound.setOnClickListener(new View.OnClickListener(){
        public void onClick(View arg0) {
            if (sound.isChecked()==(true)){
                sip.setDataSource(filePath);
                sip.prepare();
                sip.start();
            }else
            {
                sip.release();
                sip = null;
            }
    
    }});
    

    【讨论】:

    • sip.setDataSource(filePath); 再次单击切换按钮时生成空指针异常,因为您在 else 部分初始化了 sip = null
    • 是的,您必须将filePath 替换为您的文件路径。尝试用 sip = MediaPlayer.create(Naruto.this, R.raw.sip2); 替换该行。请告诉我它是否有效
    【解决方案3】:

    你可以试试这个。

    sound.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() 
    {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
        {
            if(isChecked)
            {
                sip.start();
            }
            else
            {
                sip.stop();
            }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      相关资源
      最近更新 更多