2012-03-21 1 views
0

편집 : 잘 작동하는 Webview ProgressBar 사용하고 있습니다. 이제는 작동하는 Webview를 새로 고침하고 싶습니다. 내가 그들을 결합하려고 할 때, Spinner는 전혀 끝나지 않습니다. 내 코드는 다음과 같습니다.progressBar 및 새로 고침 webview 조합 android

private final Runnable m_Runnable = new Runnable() 
    { 
     public void run() 

     { 
      //Toast.makeText(WebcamsScreen.this,"in runnable",Toast.LENGTH_SHORT).show(); 
      doRefreshingStuff(id); 
      WebcamsScreen.this.mHandler.postDelayed(m_Runnable, 20000);    
     } 

    }; 



    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
      //initialitions 

     doRefreshingStuff(id); 
     this.mHandler = new Handler(); 

     this.mHandler.postDelayed(m_Runnable,20000); 

     doRefreshingStuff(id); 
    } 
public void doRefreshingStuff(String id){ 

       setContentView(R.layout.web4); 

       webView7 = (WebView) findViewById(R.id.web_4_1); 

       webView7.getSettings().setJavaScriptEnabled(true); 
       webView7.getSettings().setJavaScriptEnabled(true); 
       progressBar = ProgressDialog.show(WebcamsScreen.this, "example", "..."); 
       url="my url"; 
webView7.setWebViewClient(new WebViewClient() { 
       public boolean shouldOverrideUrlLoading(WebView view, String url1) {    
        view.loadUrl(url1); 
        return true; 
       } 


       public void onPageFinished(WebView view, String url1) { 
        if (progressBar.isShowing()) { 
         progressBar.dismiss(); 
        } 
       } 
      }); 
       webView7.loadUrl(url); 

변경해야하는 항목은 무엇입니까?

+0

왜 onCreate를 계속해서 다시 호출 하시겠습니까? – MByD

+1

직접'onCreate'를 실행하고 싶지는 않습니다. 실제로 성취하려는 것은 무엇입니까? –

+0

webview 용 progressBar를 설정했습니다. 위의 코드를 사용하면 작동하지 않습니다. 나는 분 내 게시물을 편집합니다. –

답변

1

WebView를 20 초마다 새로 고침하고 새로운 진행 대화 상자가 표시되는 것처럼 보입니다. 코드에서 이전 진행 대화 상자가 이미 닫혀 있다고 가정합니다. 그렇지 않은 경우 진행 대화 상자가 고아가되어 영원히 표시됩니다. 당신은 아마이 코드를 삽입하여이 문제를 해결할 수 있습니다

if (progressBar != null && progressBar.isShowing()) { 
    progressBar.dismiss(); 
} 

바로 라인 progressBar = ... 전에.

하지만 코드를 그렇게 수정하지는 않습니다. 당신은 할 필요가없는 엄청난 양의 일을하고 있습니다. (예를 들어, 동일한 내용보기를 다시로드 할 필요가 없습니다.) 여기 내 수정 된 버전입니다 : 내가 onResume()에 페이지 로딩 루프의 시작을 이동 onPause()의 반복 죽일

private final Runnable m_Runnable = new Runnable() { 
    public void run() { 
     doRefreshingStuff(id); 
     mHandler.postDelayed(m_Runnable, 20000); 
    } 
}; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     //initialitions 

    setContentView(R.layout.web4); 
    webView7 = (WebView) findViewById(R.id.web_4_1); 
    webView7.getSettings().setJavaScriptEnabled(true); 
    webView7.getSettings().setJavaScriptEnabled(true); 
    webView7.setWebViewClient(new WebViewClient() { 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      if (!mProgressBar.isShowing()) { 
       mProgressBar.show(); 
      } 
     } 
     public void onPageFinished(WebView view, String url1) { 
      if (mProgressBar.isShowing()) { 
       mProgressBar.dismiss(); 
      } 
     } 
    }); 

    mProgressBar = new ProgressDialog(this); 
    mProgressBar.setTitle("example"); 
    mProgressBar.setMessage("..."); 

    mHandler = new Handler(); 
} 

protected void onResume() { 
    super.onResume(); 
    mHandler.post(m_Runnable); 
} 

protected void onPause() { 
    super.onPause(); 
    mHandler.removeCallbacks(m_Runnable); 
} 

public void doRefreshingStuff(String id) { 
    url="my url"; 
    webView7.loadUrl(url); 
} 

참고. 약간 다른 논리를 원할 수도 있지만 활동이 일시 중지되거나 완료 될 때 반복적으로 루프를 중단해야합니다.

+0

감사합니다. 시도해 보겠습니다. 이 오류가 발생합니다. 원인 : android.app.SuperNotCalledException : Activity가 super.onResume()을 호출하지 못했습니다. 당신이 나를 도울 수 있다면, 당신은 내 영웅이 될 것입니다. –

+0

나는 또한 이것을 얻는다 : java.lang.RuntimeException : 활동을 다시 시작할 수 없다 android.app.SuperNotCalledException : <...> 활동이 <...>을 호출하지 않았다. super.onResume() –

+0

@qwerty_gr - 죄송합니다. 나는 onPause()와 onResume()에서'super '를 호출하지 않았다. 나는해야 할 일을 보여주기 위해 코드를 업데이트했다. –