1

我有一个活动列表,每个链接到自己的活动,并带有播放和暂停按钮。播放和暂停按钮起作用,我离开活动然后返回,一旦我返回,两个按钮都不起作用。

我不确定我必须做什么才能完成这项工作。

我是 Java/Eclipse 的新手。

com.zaknorris.brainhacker.v1;

public class attentionbuilder extends Activity{

MediaPlayer mpAttention;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.attentionbuilder);

    final MediaPlayer mpAttention = MediaPlayer.create(this,R.raw.attn);


    Button btnplay = (Button) findViewById(R.id.btnplay);

    btnplay.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            mpAttention.start();
            mpAttention.setLooping(true);

        }{;
    };{

    Button btnstop = (Button) findViewById(R.id.btnstop);

    btnstop.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            mpAttention.pause();                
        }}
        );
    };
    }); 



    }
}
4

2 回答 2

1

您失去了对括号和括号的控制:

            }{;
    };{
    ...
    }}
    );
};
}); 

我不确定按钮如何btnstop接收它的 OnClickListener,因为括号尝试在您的btnplayOnClickListener 中编译它...

试试这个:

    final MediaPlayer mpAttention = MediaPlayer.create(this,R.raw.attn);
    Button btnplay = (Button) findViewById(R.id.btnplay);
    btnplay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mpAttention.start();
            mpAttention.setLooping(true);
        }
    });

    Button btnstop = (Button) findViewById(R.id.btnstop);
    btnstop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mpAttention.pause();                
        }
    });

如果按钮仍然失去功能,请在您的 onPause()、onResume() 和 onDestroy() 方法中发布任何代码。

添加

您还定义mpAttention了两次,更改此行:

final MediaPlayer mpAttention = MediaPlayer.create(this,R.raw.attn);

到:

mpAttention = MediaPlayer.create(this, R.raw.attn);

添加

在Activity被销毁之前你需要释放MediaPlayer,否则你在重新创建Activity时会遇到麻烦。

@Override
protected void onDestroy() {
    mpAttention.release();
    super.onDestroy();
}

如果您想在用户切换到另一个任务时自动暂停播放:电话、短信等:

@Override
protected void onPause() {
    if(mpAttention.isPlaying())
        mpAttention.pause();
    super.onPause();
}
于 2012-07-11T18:29:58.233 回答
0
}{;
    };{

以上两个符号似乎是Java的新增功能……呵呵……开玩笑……我认为这只是一个粗心的错误……

这是正确的方式:

btnplay.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            mpAttention.start();
            mpAttention.setLooping(true);

        }
    });
于 2012-07-11T18:39:41.223 回答