一旦我离开活动并返回,按钮就会停止工作

时间:2012-07-11 18:22:56

标签: android android-button

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

我不确定我需要做些什么来完成这项工作。

我是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();                
        }}
        );
    };
    }); 



    }
}

2 个答案:

答案 0 :(得分:1)

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

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

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

试试这个:

    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();                
        }
    });

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

<强>加成

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

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

为:

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

<强>加成

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

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

如果您想在用户切换到其他任务时自动暂停播放:电话,短信等:

@Override
protected void onPause() {
    if(mpAttention.isPlaying())
        mpAttention.pause();
    super.onPause();
}

答案 1 :(得分:0)

}{;
    };{

以上两个符号似乎是Java的新增内容......他和他......分开开玩笑....我认为这只是一个粗心的错误....

这是正确的方式:

btnplay.setOnClickListener(new View.OnClickListener() {

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

        }
    });