아래 코드를 사용하여 잘못된 사용자 이름이나 암호를 입력하는 동안 대화 상자를 표시하려고했습니다.Android 대화방에서 대화 상자의 내용을 읽지 못했습니다.
private void showAlert(String title, String msg) {
customDialog = new Dialog(LoginActivity.this,
android.R.style.Theme_Dialog);
customDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
customDialog.setContentView(R.layout.custom_alert_dialog);
tvTitle = (TextView) customDialog
.findViewById(R.id.dialog_title);
tvMsg = (TextView) customDialog
.findViewById(R.id.dialog_message);
btnNeutral = (Button) customDialog
.findViewById(R.id.closeAlert);
tvMsg.setText(msg);
tvTitle.setText(title);
tvMsg.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
tvMsg.setFocusable(true);
btnNeutral.setText("Close");
btnNeutral.setVisibility(View.VISIBLE);
btnNeutral.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
customDialog.dismiss();
}
});
customDialog.show();
tvMsg.requestFocus();
}
코드가 잘 작동하지만 내 관심사는 안드로이드 토크백을 사용할 때입니다. 대화 상자의 제목 만 읽습니다. 토크백은 제목 대신 대화 상자의 내용 (메시지)을 읽어야합니다. 아무도 나를 도울 수 있습니까?
위의 지침을 따라했지만 여전히 동일한 문제가 있습니다. –
경쟁 조건이있을 수 있습니다. ViewAccessibilityEvent 행을 보내기 전에보기가 렌더링되고보기 계층 구조에 있는지 확인하십시오. 그렇지 않은 경우 뷰가 렌더링되도록 올바른 콜백을 찾으려면 지연이 필요합니다. – ChrisCM
Thread.sleep을 사용하여 뷰 렌더링에 몇 초 동안 기다렸다가'tvMsg.sendAccessibilityEvent (AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); 코드 만 적용했습니다. 하지만 여전히 작동하지 않습니다. –