Android自动刷新按钮

时间:2012-10-24 15:45:34

标签: android button refresh

我遇到的问题看起来应该很简单。我有一个带有2个按钮的框架布局(一个在另一个上面自然)。当我点击顶部按钮时,它会自动将我带到一个网站,其下方的按钮将其替换为可见的网站。我想设置一个自动刷新,几秒钟之后,原来在顶部的按钮再次位于顶部。感谢您提供任何帮助!这是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);

1 个答案:

答案 0 :(得分:1)

问题是,您的Refresh runnable仅在第一个按钮上注册onClickListener并且每10秒调用一次,您应该只在Runnable外部注册一次onClickListener,并且只在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);
        }

    });