0

非常に単純であるように思われるものに問題があります。私は2つのボタンを備えたフレームレイアウトを持っています(当然のことながら1つは他のボタンの上にあります)。一番上のボタンをクリックすると、自動的に Web サイトに移動し、その下のボタンが表示されるように置き換えられます。数秒後に、最初に一番上にあったボタンが再び一番上になるように自動更新を設定したい。あなたが与えることができるどんな助けにも感謝します! ここにJavaがあり、自動更新を作成しようとしています:

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

    final ImageButton bJava1= (ImageButton)findViewById(R.id.button1);
    final ImageButton bJava2 = (ImageButton)findViewById(R.id.button2);
    final WebView webview1= (WebView)this.findViewById(R.id.webView1);
    final MediaPlayer sound= MediaPlayer.create(Youtube.this, R.raw.soundclip1);

    final Handler handler = new Handler();
    Refresh = new Runnable() {
        public void run() {

        bJava1.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                webview1.loadUrl("http://www.google.com");
                if(sound.isPlaying()){
                    bJava1.setVisibility(ImageButton.VISIBLE);
                    bJava2.setVisibility(ImageButton.GONE);
                }else {
                    sound.start();
                    bJava1.setVisibility(ImageButton.GONE);
                    bJava2.setVisibility(ImageButton.VISIBLE);
                }
            }

        });
        handler.postDelayed(Refresh, 10000);
    }
};
handler.post(Refresh);
4

1 に答える 1

1

問題は、Refresh runnable が最初のボタンでのみ onClickListener を登録し、10 秒ごとに自分自身を呼び出すことです。onClickListener は Runnable の外で 1 回だけ登録し、Refresh.run() メソッド内で if ブロックのみを呼び出す必要があります。

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

final ImageButton bJava1= (ImageButton)findViewById(R.id.button1);
final ImageButton bJava2 = (ImageButton)findViewById(R.id.button2);
final WebView webview1= (WebView)this.findViewById(R.id.webView1);
final MediaPlayer sound= MediaPlayer.create(Youtube.this, R.raw.soundclip1);
final Handler handler = new Handler();
Refresh = new Runnable() {
    public void run() {
       if(sound.isPlaying()){
                bJava1.setVisibility(ImageButton.VISIBLE);
                bJava2.setVisibility(ImageButton.GONE);
            }else {
                sound.start();
                bJava1.setVisibility(ImageButton.GONE);
                bJava2.setVisibility(ImageButton.VISIBLE);
            }
     }
};
bJava1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            webview1.loadUrl("http://www.google.com");
            handler.postDelayed(Refresh, 10000);
        }

    });
于 2012-10-24T16:10:38.850 に答える