WebViewで端末のバックキーの挙動を変える 改


WebViewで端末のバックキーの挙動を変えるという記事を書きました。

が、一部の端末でちょっと変な動作が発生していたようです。

EditTextの中で文章を書いている最中に、文章を間違ったとします。

01

BackSpaceキーを押して文章を消そうとすると……

02

Activityが閉じてしまうのです。

端末の種類によっては上記のようなことは起こらず、普通に動作するのでこの不具合に気付くのが遅れました。

これを修正するには、WebViewのソース内にこんな記述が必要です。

// 端末の戻るボタンを押した時に前のページに戻す
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
	// ページを進んでいたら
	if (event.getAction() == KeyEvent.ACTION_DOWN
			&& keyCode == KeyEvent.KEYCODE_BACK
			&& webView.canGoBack() == true) {
		System.out.println("event.getAction():" + event.getAction());
		System.out.println("keyCode:" + keyCode);
		ReturnPage();
		return true;
	}
	//BackSpaceを押したとき
	else if (event.getAction() == KeyEvent.ACTION_DOWN
			&& keyCode == KeyEvent.KEYCODE_DEL) {
		System.out.println("event.getAction():" + event.getAction());
		System.out.println("keyCode:" + keyCode);
		return true;
	}
	// トップページならActivity終了
	else {
		Finish();
		return true;
	}
}

端末によっては、EditTextで文章を書いているときにBackSpaceを押すとkeyCodeがKeyEvent.KEYCODE_DELでイベントが発生します。

ちゃんとif文の条件で受け取って何も処理しないようにしないとだめです。

03

こうすると、ちゃんと……

04

文章を消すことができます!

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください