- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让 MainActivity 文件有一个监听器来接收来自 EditText 文件的回调。当用户按下后退按钮时,将触发监听器。由于软键盘将打开,我希望 onKeyPreIme 函数能够捕获后退按钮的按下,以便它可以加载 Toast 并关闭软键盘。附件是两个关键文件。我知道 onKeyPreIme 函数不起作用,因为监听器未在 MainActivity 文件中加载 Toast。请指教。
MainActivity.java 文件:
import static com.example.jdw.secondscreen.ListenerEditText.KeyImeChange;
public class CardViewActivity extends AppCompatActivity {
Context context;
private ListenerEditText myListenerEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cardviewinput);
myListenerEditText = (ListenerEditText) findViewById(R.id.CEditText);
myListenerEditText.setKeyImeChangeListener(new KeyImeChange() {
@Override
public boolean onKeyIme(int keyCode, KeyEvent event) {
Toast.makeText(context, "Test", Toast.LENGTH_LONG).show();
return false;
}
});
...
ListenerEditText.java 文件:
public class ListenerEditText extends EditText {
private KeyImeChange keyImeChangeListener;
public ListenerEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setKeyImeChangeListener(KeyImeChange listener) {
keyImeChangeListener = listener;
}
public interface KeyImeChange {
boolean onKeyIme(int keyCode, KeyEvent event);
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if(event.getAction()==KeyEvent.ACTION_UP &&
keyCode==KeyEvent.KEYCODE_BACK) {
if(keyImeChangeListener!= null) keyImeChangeListener.onKeyIme(keyCode, event);
}
return super.onKeyPreIme(keyCode, event);
}
}
Logcat 输出:
05-20 04:19:44.742 29155-29155/com.example.jdw.secondscreen E/InputEventReceiver﹕ Exception dispatching input event.
05-20 04:19:44.742 29155-29155/com.example.jdw.secondscreen E/MessageQueue-JNI﹕ Exception in MessageQueue callback: handleReceiveCallback
05-20 04:19:44.742 29155-29155/com.example.jdw.secondscreen E/MessageQueue-JNI﹕ java.lang.NullPointerException
at android.widget.Toast.<init>(Toast.java:92)
at android.widget.Toast.makeText(Toast.java:238)
at com.example.jdw.secondscreen.CardViewActivity$1.onKeyIme(CardViewActivity.java:31)
at com.example.jdw.secondscreen.ListenerEditText.onKeyPreIme(ListenerEditText.java:34)
at android.view.View.dispatchKeyEventPreIme(View.java:7060)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewRootImpl.deliverKeyEvent(ViewRootImpl.java:3511)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3113)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4153)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4132)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4224)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:125)
at android.os.Looper.loop(Looper.java:124)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
05-20 04:19:44.742 29155-29155/com.example.jdw.secondscreen D/AndroidRuntime﹕ Shutting down VM
05-20 04:19:44.742 29155-29155/com.example.jdw.secondscreen W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa6263288)
05-20 04:19:44.742 29155-29155/com.example.jdw.secondscreen E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.Toast.<init>(Toast.java:92)
at android.widget.Toast.makeText(Toast.java:238)
at com.example.jdw.secondscreen.CardViewActivity$1.onKeyIme(CardViewActivity.java:31)
at com.example.jdw.secondscreen.ListenerEditText.onKeyPreIme(ListenerEditText.java:34)
at android.view.View.dispatchKeyEventPreIme(View.java:7060)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewGroup.dispatchKeyEventPreIme(ViewGroup.java:1339)
at android.view.ViewRootImpl.deliverKeyEvent(ViewRootImpl.java:3511)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3113)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4153)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4132)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4224)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:125)
at android.os.Looper.loop(Looper.java:124)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
最佳答案
这里:
Toast.makeText(context, "Test", Toast.LENGTH_LONG).show();
^^^^^
context
为 null
在传递给 makeText
方法之前初始化 context
:
context=CardViewActivity.this;
或者直接使用 CardViewActivity.this
来显示 Toast 消息,而不是使用不必要的变量:
Toast.makeText(CardViewActivity.this, "Test", Toast.LENGTH_LONG).show();
关于android - 如何使用 MainActivity Listener 消除 NPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30340437/
因此,我正在学习 Lynda.com 上关于使用 Google map V2 构建移动应用程序的教程,并且我正在学习一个让您创建 map 应用程序的部分,该应用程序以编程方式查找位置,而不是依赖于se
我有一个 Mainactivity,其中包含一个 Layout,它是 4 个子布局的父级。单击子布局后,我将使用一个新 fragment 替换主布局。但我无法在按下返回按钮后返回 MainActivi
如你所见 this@MainActivity 或 MainActivity@this 在 kotlin 中开始 Activity 时有效。我试图找出答案,但我什么也没找到。谁能知道它的确切区别以及哪个
Solve by using getActivity() 我有这个 MainActivity.java 和 RepeatEntry.java 在我的 MainActivity 中,我有这个代码来实现
我正在尝试将 Google Analytics 集成到我的应用程序中,并遵循来自 here 的教程一切就绪: 我有一个 MainActivity,它扩展了 Activity 并附加了三个 Tab Fr
EditText 对象未创建,为什么? EditText editText=(EditText)findViewById(R.id.edittext); 这适用于扩展 AsyncTask 类的应用程序
所以我正在尝试了解 Android Fragments。如果我将以下代码放入我的 MainActivity 中: public void getMessage(Object obj) { Lo
我试图在我的Android设备上运行我的Android应用程序,但它一直显示我的主活动不存在,尽管我的主活动类在那里。我试图创建一个新的项目,然后复制我以前的代码,它在一段时间内奏效了。但随后它又产生
//主要活动 package com.going.books; import androidx.appcompat.app.AppCompatActivity; import androi
这似乎是一个我不好意思问的基本问题,但我对我的 Fragment 学习曲线感到非常沮丧,以至于我会暴露我的无知。 教科书中的一个例子,它削减了很多角落,使得扩展变得困难,即使它们有效,也没有按钮可以点
我正在将我的启动 Activity 从“MainActivity”更改为“RealMain”我在 list 中声明了这一点,但是 MainActivity 仍然首先出现。有人可以启发我吗?代码来 se
它失败了@ below line - bindService(intent, m_serviceConnection, Context.BIND_AUTO_CREATE); 下面是轨迹.... Act
我的项目在调试状态下正常工作。当我打开MainActivity.java文件时,这在import androidx.annotation.NonNull;上显示了问题 并在下面显示错误。 FAILUR
我在 MainActivity 类中看到了这样的代码: class MainActivity : AppCompatActivity() { private val languages = a
我的问题是关于如何制作启动屏幕,并在 MainActivity 完成渲染时完成启动屏幕,而不是通过设置超时。 我已经搜索过如何制作闪屏并且我已经做到了,但主要是他们使用超时来设置闪屏何时必须关闭/完成
大家好,我正在尝试为我的 Android 手机开发一个手电筒应用程序,但是当我运行它时出现错误。 GUI 有 2 个按钮:1 个用于开灯,另一个用于关灯 这是代码: package com.examp
如何解决这个问题? MainActivity.this is not an enclosing class. 谢谢 public class uploadToServer extends AsyncT
我的 logcat 中出现一些错误,并且我的应用程序无法在我的智能手机上运行...我更改了 list 和 MainActivity 中的一些代码(名为 HomaActivity ) 这是我的 list
我想知道使用单例 MainAcitivity 是否是一个糟糕的设计选择,如下所示: public class MainActivity extends AppCompatActivity ... {
我正在创建一个像 WhatsApp 一样的应用程序,但我遇到了问题。该应用程序应该进入 LoginActivity,但它直接进入 MainActivity,而无需我登录。 我尝试更改 Android
我是一名优秀的程序员,十分优秀!