0

私はアンドロイドが初めてです。サービスからアクティビティの制御にアクセスできないことはわかっています。しかし、サービスのメソッドを呼び出すたびに、ボタンの ImageSource を変更したいと考えています。

サービスで作成したメソッドは次のとおりです。

public void play()
    {
        if (mp.isPlaying()) {
            if (mp != null) {
                mp.pause();
                // Changing button image to play button
                btnPlay.setImageResource(R.drawable.btn_play); // not allowed
            }
        } else {
            // Resume song
            if (mp != null) {
                mp.start();
                // Changing button image to pause button
                btnPlay.setImageResource(R.drawable.btn_pause); // not allowed
            }
        }
    }

アクティビティでは、再生ボタンのクリック時にこのメソッドを呼び出しています。この機能をサービスに実装する方法。ボタンの画像ソースを変更するにはどうすればよいですか。私の疑いを晴らしてください。ありがとう。

4

2 に答える 2

0

これらのイベントのカスタム イベント オブジェクトを作成し、アクティビティをリスナーとして登録します。

注: メモリ リークが発生する可能性があるため、登録を解除することを忘れないでください。

于 2013-01-04T11:15:06.203 に答える
0

このコードを試してください

 public class MainActivity extends Activity
 {
/** Called when the activity is first created. */

public static MainActivity mThis;
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mThis = this;

}

}

public void play()
{

 Button btnPlay=((Button)MainActivity.mThis.findViewById(R.id.btnPlay));
  if (mp.isPlaying()) {
    if (mp != null) {
        mp.pause();
        // Changing button image to play button

        btnPlay.setImageResource(R.drawable.btn_play); 
    }
} else {
    // Resume song
    if (mp != null) {
        mp.start();
        // Changing button image to pause button
        btnPlay.setImageResource(R.drawable.btn_pause); 
    }
}
于 2013-01-04T11:18:27.597 に答える