在Android中长按edittext时崩溃

Posted

技术标签:

【中文标题】在Android中长按edittext时崩溃【英文标题】:Crash on longpress of edittext in Android 【发布时间】:2014-08-12 05:19:00 【问题描述】:

我有一个编辑文本。当我试图长按edittext应用程序崩溃时, 它给出了以下日志:

08-12 10:42:51.503: E/androidRuntime(838): FATAL EXCEPTION: main
08-12 10:42:51.503: E/AndroidRuntime(838): java.lang.NullPointerException
08-12 10:42:51.503: E/AndroidRuntime(838):  at  android.support.v7.app.ActionBarImplICS.getThemedContext(ActionBarImplICS.java:302)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.support.v7.app.ActionBarImplJB.getThemedContext(ActionBarImplJB.java:20)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.support.v7.app.ActionBarActivityDelegate.getActionBarThemedContext(ActionBarActivityDelegate.java:208)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.support.v7.app.ActionBarActivityDelegateICS.onActionModeStarted(ActionBarActivityDelegateICS.java:195)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.onActionModeStarted(ActionBarActivityDelegateICS.java:359)
08-12 10:42:51.503: E/AndroidRuntime(838):  at com.android.internal.policy.impl.PhoneWindow$DecorView.startActionMode(PhoneWindow.java:2342)
08-12 10:42:51.503: E/AndroidRuntime(838):  at com.android.internal.policy.impl.PhoneWindow$DecorView.startActionModeForChild(PhoneWindow.java:2260)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:654)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:654)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:654)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:654)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:654)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:654)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.view.View.startActionMode(View.java:4519)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.widget.Editor.startSelectionActionMode(Editor.java:1524)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.widget.Editor.performLongClick(Editor.java:845)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.widget.TextView.performLongClick(TextView.java:8268)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.view.View$CheckForLongPress.run(View.java:17882)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.os.Handler.handleCallback(Handler.java:730)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.os.Handler.dispatchMessage(Handler.java:92)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.os.Looper.loop(Looper.java:137)
08-12 10:42:51.503: E/AndroidRuntime(838):  at android.app.ActivityThread.main(ActivityThread.java:5214)
08-12 10:42:51.503: E/AndroidRuntime(838):  at java.lang.reflect.Method.invokeNative(Native Method)
08-12 10:42:51.503: E/AndroidRuntime(838):  at java.lang.reflect.Method.invoke(Method.java:525)
08-12 10:42:51.503: E/AndroidRuntime(838):  at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
08-12 10:42:51.503: E/AndroidRuntime(838):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
08-12 10:42:51.503: E/AndroidRuntime(838):  at dalvik.system.NativeStart.main(Native Method)  

我不知道为什么会这样。

【问题讨论】:

EditText的邮政编码 操作栏为空。你的应用主题有吗? 我正在使用这一行,requestWindowFeature(Window.FEATURE_NO_TITLE);会不会有问题? 没有您的代码 sn-p 我们可以知道您的代码有什么问题,您可以发布您的代码吗? 好的,我得到了解决方案,我的活动正在扩展 ActionBarActivity,我只是用 Activity 替换它,它工作正常。谢谢大家的关注和帮助.. :) 【参考方案1】:

从here试试这个

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
    if ( keyCode == KeyEvent.KEYCODE_MENU ) 
        // do nothing
        return true;
    
    return super.onKeyDown(keyCode, event);
 

【讨论】:

@RajeshSuthar 这个问题似乎已在code.google.com/p/android/issues/detail?id=61394..please 中得到修复,请确保您使用的是最新版本的库【参考方案2】:

也许你需要 getSupportActionbar() 而不是 getActionbar()

【讨论】:

【参考方案3】:

我研究过这个问题,发现这个问题是 android OS 错误,为了解决这个问题,请在您的 values/styles 中删除以下代码:

<item name="android:fontFamily">every things here</item>

【讨论】:

【参考方案4】:

IF 你的EditTextTextInputLayout 包裹,这可能对你有帮助

如果TextInputLayout 分配了theme,请确保其父级是

parent="Widget.Design.TextInputLayout"

这是我的问题,在更改父级后它开始正常工作。

【讨论】:

【参考方案5】:

以下是对我有用的...

1) 如果您的 EditText 使用 TextInputLayout 包装,则将以下属性添加到您的 Edittext

android:longClickable = false

2) 如果您为 EditText 使用自定义样式,则将以下属性添加到您的自定义样式代码中。

<item name="android:longClickable">false</item>

希望这会有所帮助。

【讨论】:

以上是关于在Android中长按edittext时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Android:当有一个空白的editText字段时,我的应用程序崩溃了

每当我的 EditText 为空并且按下按钮时,我的应用程序就会崩溃

从 EditText 获取数据输入时,导致应用程序崩溃 Android 的 NumberFormat 错误

带有 android:hint 的 Android EditText 密码

如何为特定活动禁用Android Soft Keyboard?

EditText 填充在 Android 中无法按预期工作