我在Activity中有多个按钮。每个按钮都会打开一个单独的 AlertDialog 。当应用程序启动时,我点击鼠标按钮,我希望点击按钮获得焦点..所以我也可以通过D-Pad按钮导航。但它没有,更糟糕的是,如果活动中的任何其他项目没有焦点,焦点有时会永远丢失...所以我无法使用D-Pad按钮进行导航......
我想澄清一下,这不是因为 actionItem.requestFocus()设置后打开的 AlertDialog ..我通过评论Dialog开启代码进行检查太......但没有运气
我想按照以下方式进行:
public void buttonClicked(View actionItem){
//Set focus on clicked button -- but this does not work
actionItem.requestFocus();
switch(actionItem.getId()){
case R.id.btnLogin:
//Show AlertDialog 1
break;
case R.id.btnInfo:
//Show AlertDialog 2
break;
case R.id.btnClose:
//Show AlertDialog 3
break;
}
}
我希望在任何AlertDialog打开之前,单击的按钮具有焦点..所以当AlertDialog关闭时,单击的按钮将具有焦点。
此 buttonClicked 事件已注册多个按钮..我将其设置如下:
<Button
android:id="@+id/btnClose"
style="@style/button"
android:onClick="buttonClicked"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:drawableLeft="@drawable/close"
android:focusable="true"
android:text="Exit" />
<Button
android:id="@+id/btnInfo"
style="@style/button"
android:onClick="buttonClicked"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@+id/btnClose"
android:layout_centerVertical="true"
android:drawableLeft="@drawable/information"
android:focusable="true"
android:text="About" />
在每个按钮点击时调用 buttonClicked 功能,但该按钮无法获得焦点...
任何想法?
答案 0 :(得分:0)
尝试在方法的开头调用requestFocus(),而不是在每个case中调用它。然后你可以确定它是你设置焦点的正确元素。
示例:
switch(actionItem.getId()){
case R.id.btnLogin:
actionItem.requestFocus()
break;
}
这是我最好的猜测,它对我有用。
祝你好运:)