我在片段中有一个Android应用程序,我正在尝试按下音量键事件,但事件不会触发。
我尝试在onKey()方法中设置断点,它从未到过那里。
以下代码: -
import android.view.View.OnKeyListener;
public class ExampleFragment extends Fragment implements OnKeyListener {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){
//to do code goes in here
return true;
}
return false;
}
}
答案 0 :(得分:0)
您尚未将 Year Month Day Hour Minutes Reading
0 2011 1 1 0 0 1.6
1 2011 1 1 1 0 1.1
设置为Fragment
任何内容。需要注册KeyListener
才能提交View
。
在KeyEvent
中,尝试以下内容:
Fragment
在理想的世界中,@Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// Create an EditText we want to Listen to.
EditText e = new EditText(getActivity());
// Assert this Fragment was the KeyListener.
e.setOnKeyListener(this);
// Return the View.
return e;
}
不应该对收听 Button
负责。它应该只处理点击和按下,因为这是KeyEvent
在现实世界中的表现。通常,您应该避免提供任何类型的图形对象特定于应用程序的知识,应该由应用程序决定要做什么,并相应地更新UI。
这种架构通常以Model View Controller的形式出现。
相反,您可能希望尝试覆盖Button
拥有onKeyDown
中的Fragment
,并将其路由到Activity
中的相应方法。
请参阅此example。
答案 1 :(得分:0)
我遇到了同样的问题。在我的例子中,onKeyListener在一个片段中正常工作,但它在另一个片段中不起作用。我发现它取决于键盘的类型。 我已经设置了EditText inputType =" text"它开始起作用了。这是一个奇迹。我真的无法理解发生了什么。在我的情况下,问题出现在华为,genymotion错误没有出现。
<EditText
android:id="@+id/answer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:inputType="text"
/>