Android WebViewの順方向、逆方向、更新、およびOnkeyDownイベントとOnBackPressedメソッド



Android Webview Forward



再びwebViewについて、蓄積を続けます。

mWebView.goBack()//戻る
mWebView.goForward()// Forward

mWebView.reload()//更新




注意事項:



この操作は、webView.setOnKeyListener()のonKey()メソッド、またはActivityのonKeyDownメソッド(onKeyDownメソッド)で実装されます。

//戻るボタンをクリックしてWebViewを1ページ戻します(ActivityのonKeyDownメソッドをオーバーライドすることもできます)

[java] プレーンビュー コピー
  1. webview.setOnKeyListener(新着View.OnKeyListener(){
  2. @オーバーライド
  3. 公衆 ブール値onKey(ビューv、intkeyCode、KeyEventイベント){
  4. もし(event.getAction()== KeyEvent.ACTION_DOWN){
  5. もし(keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()){//戻るキーを押すことを意味します
  6. webview.goBack()//後方
  7. //webview.goForward()//Forward
  8. 戻る true //処理済み
  9. }
  10. }
  11. 戻る false
  12. }
  13. })

OnkeyDownイベントとOnBackPressedメソッドに関する注意




â€&centAndroidプラットフォームで戻るキーイベントをキャプチャします。戻るキーは、携帯電話の戻るキーです。一般的なソフトウェアは関連情報をキャプチャしないため、プログラムがバックグラウンドに切り替えられてデスクトップに戻る可能性があります。厄介な状況では、Androidでボタンイベントを取得する方法は2つあります。

1.ボタン押下イベントを直接取得します。この方法は、Android1.0からAndroid2.1と互換性があります。これも通常の方法です。 ActivityのonKeyDownメソッドを直接オーバーライドできます。コードは次のとおりです。

[java] プレーンビュー コピー
  1. @オーバーライド
  2. 公衆 ブール値onKeyDown(intkeyCode、KeyEventイベント){
  3. もし(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0){// BACKを押すと、繰り返しはありません
  4. Toast.makeText(ml78。この「バックキーテスト」1)。公演()
  5. 戻る true
  6. }
  7. 戻る 素晴らしい.onKeyDown(keyCode、event)
  8. }

そしてのためにAndroid 2.0最初は、新しい方法があります。アクティビティの場合、戻るキーのプレスイベントを個別に取得し、onBackPressedメソッドを直接オーバーライドできます。コードは次のとおりです

[java] プレーンビュー コピー
  1. @オーバーライド
  2. 公衆 ボイドonBackPressed(){
  3. //ここでロジックコードを処理します。注意:このメソッドはSDK2.0以降にのみ適用可能です
  4. 戻る
  5. }

同時に、以前に開発したプログラムでonKeyDownメソッドが使用されている場合がありますが、後続のバージョンはOnBackPressedメソッドと互換性があります。 2つの間にネストする必要があります。具体的な方法は次のとおりです。

[java] プレーンビュー コピー
  1. @オーバーライド
  2. 公衆 ブール値onKeyDown(intkeyCode、KeyEventイベント){
  3. //トリガーボタンが戻るボタンかどうか
  4. もし(keyCode == KeyEvent.KEYCODE_BACK){
  5. onBackPressed()
  6. 戻る true
  7. }そうしないと{{//戻るボタンの通常の応答ではない場合
  8. 戻る 素晴らしい.onKeyDown(keyCode、event)
  9. }
  10. }
誤操作を防ぐために、時差方式を使用して2つのリターンキー出口を完了します。

[java] プレーンビュー コピー
  1. //終了時間
  2. 民間 長いですcurrentBackPressedTime =0
  3. //終了間隔
  4. 民間 静的finalint BACK_PRESSED_INTERVAL =2000年
  5. // exitメソッドから継承されたonBackPressed()メソッドをオーバーライドします
  6. @オーバーライド
  7. publicvoid onBackPressed(){
  8. //判断時間間隔
  9. もし(System.currentTimeMillis()-currentBackPressedTime> BACK_PRESSED_INTERVAL){
  10. currentBackPressedTime = System.currentTimeMillis()
  11. Toast.makeText(この「プログラムを終了するには、もう一度リターンキーを押してください」、Toast.LENGTH_SHORT).show()
  12. }そうしないと{{
  13. // 脱落
  14. finish()
  15. }
  16. }

OnkeyDownイベントとOnkeyUpイベントは異なるイベントです。 OnBackPressedメソッドは、リターンキーの操作を処理し、上向きに伝播しません。上向きに伝播する場合は、OnkeyDownイベントまたはOnkeyUpイベントを使用してください。


ここでは、ActivityメソッドのonKeyDown()メソッドとonKeyUp()メソッドを確認できます。以下は私が学習で見たものの例です:

'今日、魔法のバグを修正しました。 ActivitySecondのOnkeyDownイベントを使用して、リターンキーイベントを監視しました。イベントがActivityFirstの最初のレベルに広がるのを防ぐためにtrueを返しましたが、ActivityFirstのOnFirstUpで見つかりました。リターンキーを監視するためのコードスニペットは引き続き実行されます。 1つがOnkeyDownイベントで、もう1つがOnkeyUpイベントであることを発見するのに長い時間がかかりました。これら2つは異なるイベントです。 ActivitySecondは、OnkeyUpイベントが上向きに広がるのを防ぎません。

しかし途中で、ActivitySecondのOnkeyDownイベントをキャンセルし、OnBackPressedメソッドに置き換えたところ、リターンキーのすべてのイベントが上向きに伝播しないことがわかりました。 '

概要:OnkeyDownイベントとOnkeyUpイベントは異なるイベントです。 OnBackPressedメソッドは、リターンキーの操作を処理し、上向きに伝播しません。上向きに伝播する場合は、OnkeyDownイベントまたはOnkeyUpイベントを使用してください。