2012-05-07 2 views
1

나는이 사이트, Google 및 다른 Android 포럼에서 답변을 찾았지만 제대로 작동하지 않습니다.Android WebView에 BACK 키를 포함하는 방법

Android WebView 앱에 BACK 키를 포함하려고합니다. 그렇지 않으면 BACK 키가 바로 활동을 종료하기 때문입니다.

저는 Android에 익숙하지 않으므로 프로그래밍하는 데 모든 것이 있는지 잘 모릅니다. 아무도 올바른 방향으로 나를 가리킬 수 있습니까?

감사합니다. 당신의 Activity에서 BACK 버튼을 다음과 같이

+0

이미 답변되었습니다 : http://stackoverflow.com/questions/6077141/android-webview-how-to-code-the-back-button/6077173#6077173 – FoamyGuy

답변

4

차단 ...

public class MyWebActivity extends Activity { 

    WebView webview; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // Other code here 
     webview = new WebView(this); 
    } 

    // Other methods here 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
      webview.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
} 

예 메신저 안드로이드를 통해 내 웹보기에 URL을 잡기 다음 작업을 수행하는 Hello WebView Tutorial

+0

나는이 문제에 봉착하지만 그것이 효과가 있어야하는 것처럼. 이 코드를 내 활동에 넣으면 제공 한 코드의 webview 부분에 오류가 발생합니다. WebViewClient 및 MyWebViewClient를 사용하여 작동하도록 시도했는데 (모두 이미 내 코드에 있음) 모든 작업은 .canGoBack() 및 .goBack()에서 또 다른 오류를 발생시킵니다. 누구든지 아이디어가 있습니까? – SMOKE

+0

@SMOKE : 내 대답에 링크 된 튜토리얼을 보았습니까? 내 코드에서'webview' 위의 발췌문은'WebViewClient'가 아닌'WebView' 클래스의 인스턴스입니다. 내 대답에 편집 된 코드 예제를 참조하십시오. – Squonk

+0

더 이상 오류가 나타나지 않지만 응용 프로그램을 테스트 한 후 작동하지 않습니다. (필자는 .Java 활동을 추가하여 보았습니다. 코드에서 다른 부분을 잘못했을 수도 있습니다.) – SMOKE

0

의 일부 9 설명; 당신의 방법 shouldOverrideUrlLoading에서

:이 경우

public boolean shouldOverrideUrlLoading(WebView view, String url) 
      { 
       view.loadUrl(url); 
       webView.getUrl(); 
       if(url.equals("http://any.com/url")){ 
        //Do any action 
        Toast tr =Toast.makeText(WebViewTest.this, "Test Passed", Toast.LENGTH_LONG); 
        tr.show(); 
        //Go to other activity or you can put finish(); to stop the actual activity 
        //Do other action 
        Intent i1 = new Intent("com.mypack.courses.Passed"); 
        startActivity(i1);; 
        return true; 
       } 
       if(url.equals("http://any.com/url")){ 
        Toast tr =Toast.makeText(WebViewTest.this, "Test Failed", Toast.LENGTH_LONG); 
        tr.show(); 

        Intent i2 = new Intent("com.mypack.courses.Failed"); 
        startActivity(i2); 
        return true; 
       } 
       return true; 
      } 

, 만약 ""http://any.com/url "는 웹보기를 통해, 우리가 어떤 행동을, 단지 배치해야합니까에서 사용자가 클릭 당신의 조건이나 방법, 당신은

1

재정의 활동에 onbackpressed ...이 당신에게 아이디어를 제공하겠습니다.

@Override 
public void onBackPressed() { 

} 

다시에 활동을 종료 싶지 않는 경우가하고 싶은 곳 프레스를 누른 다음 super.onBackPressed()를 제거하면 작업을 완료 할 수 없으므로 작업을 종료하지 않고도 뒷판에서 제대로 작동합니다.

관련 문제