밑 소스 에서 처럼 버튼을 네개 만들어주어

백버튼과 포워드버튼을 구현하였습니다

그런데 그 버튼을 뒤로 갈곳이 있거나 앞으로 갈곳이 있으면

버튼을 활성화 시켜주고 아니면 비활성화를 시켜주고 싶습니다

ImageButton으로 두가지 상황을 구분하여 이미지를 적용시킬려고 하는데

canGoBack(); , canGoFoward(); 으로 boolean값을  리턴하여 알아낼수 있더라구요

헌데 그위치를 어디에다가 두어야 boolean값을 제대로 리턴 할지 모르겠습니다

 private class Callback extends WebViewClient {
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
   
   view.loadUrl(url);
   System.out.println("myWebView.canGoBack() : "+myWebView.canGoBack());
   System.out.println("myWebView.canGoForward() : "+myWebView.canGoForward());

   return (true);
  }
 }

Callback함수에 위치 시켜주었더니 한번 클릭 했을때는 둘다 false로 나오고

두번째 클릭했을때 돌아갈곳이 있다고 canGoBack() 이 true가 나오더라고요

그리고 goBack()  을 하여 이전페이지로 가게 되면 다시

canGoBack(); , canGoFoward(); 이 두함수가 boolean을 리턴을 안합니다 ㅠㅠ

다른 무언가가 있는건가요?? 답변 부탁드리겠습니다
=============================================================소스첨부

public class mNaver extends Activity {
 

 Context c = this;
 private WebView myWebView;
 final private String DEFAULT_URL = "http://m.naver.com/";
 InitDatabase idb = InitDatabase.getInstance();
 Button back;
 Button foward;
 Button refresh;
 Button home;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.mobile_renaultsamsung);

  back = (Button) findViewById(R.id.back);
  foward = (Button) findViewById(R.id.foward);
  refresh = (Button) findViewById(R.id.refresh);
  home = (Button) findViewById(R.id.home);
  
  myWebView = (WebView) this.findViewById(R.id.webview);

  
  WaitThread wThread = new WaitThread(mNaver.this);
  wThread.start();

  // new added
//  FrameLayout mContentView = (FrameLayout) getWindow().getDecorView()
//    .findViewById(android.R.id.content);
//  final View zoom = this.myWebView.getZoomControls();
//  mContentView.addView(zoom, ZOOM_PARAMS);
//  zoom.setVisibility(View.GONE);

  myWebView.setWebViewClient(new Callback());

  this.myWebView.loadUrl(DEFAULT_URL);
  try {
   Thread.sleep(800);
  } catch (Exception e) {
   e.printStackTrace();
  }
  WaitThread.stop(wThread);
  
  back.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    myWebView.goBack();

   }
  });

  foward.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    myWebView.goForward();

   }
  });

  home.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    onBackPressed();
    
   }
  });
  
  
  refresh.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    myWebView.reload();
    
   }
  });
 }
 
 @Override
 public void onBackPressed() {
  // TODO Auto-generated method stub
  super.onBackPressed();
 }
 

 // new added
 private class Callback extends WebViewClient {
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
   
   view.loadUrl(url);
   System.out.println("myWebView.canGoBack() : "+myWebView.canGoBack());
   System.out.println("myWebView.canGoForward() : "+myWebView.canGoForward());
   return (true);
  }
 }
}
/**
 * ProgressDialog Thread
 */
class WaitThread extends Thread {
 Context context;
 String title = "";
 String msg = "Loding...";
 ProgressDialog progress;
 Looper mLoop;

 WaitThread(Context _context) {
  context = _context;

  setDaemon(true);
 }

 public void run() {
  Looper.prepare();
  progress = new ProgressDialog(context);
  progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  progress.setTitle(title);
  progress.setMessage(msg);
  progress.setCancelable(false);
  progress.show();

  mLoop = Looper.myLooper();
  mLoop.loop();
 }

 static void stop(WaitThread wThread) {
  wThread.progress.dismiss();
  try {
   Thread.sleep(100);
  } catch (Exception e) {
   e.printStackTrace();
  }
  wThread.mLoop.quit();

 }
}