8

私のアプリはさまざまなAndroidバージョンをうまく使いこなしています。私はAndroid 4.3、5.0、5.1、6.0上で問題なく実行しています。しかし、S7 Edgeを使用しているユーザーは、Android 7.0で更新したばかりで、テキストがEditTextフィールドに貼り付けられたときにアプリケーションがクラッシュしています(これは、このアプリで最初に行う唯一の操作です。アプリはテキストを解析します)。Nougatを使ったjava.lang.NullPointerException

Null Pointer Exceptionで多くのスレッドを調べましたが、Editor.javaのソースを見ていますが、何も分かりません。以下のスタックトレースは、私のコードに問題はないことを示しています。これを引き起こしている可能性のある7.0の変更点

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.Editor$SelectionModifierCursorController.isDragAcceleratorActive()' on a null object reference 
at android.widget.Editor.updateFloatingToolbarVisibility(Editor.java:1520) 
at android.widget.Editor.onTouchEvent(Editor.java:1475) 
at android.widget.TextView.onTouchEvent(TextView.java:10024) 
at android.view.View.dispatchTouchEvent(View.java:10725) 
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550) 
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550) 
at android.widget.ScrollView.dispatchTouchEvent(ScrollView.java:738) 
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550) 
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550) 
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550) 
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:505) 
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1863) 
at android.app.Activity.dispatchTouchEvent(Activity.java:3226) 
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:467) 
at android.view.View.dispatchPointerEvent(View.java:10954) 
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5051) 
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4908) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4439) 
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4492) 
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4458) 
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4591) 
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4466) 
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4648) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4439) 
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4492) 
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4458) 
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4466) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4439) 
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6936) 
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6875) 
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6836) 
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7046) 
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) 
at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176) 
at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:7010) 
at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:7073) 
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927) 
at android.view.Choreographer.doCallbacks(Choreographer.java:702) 
at android.view.Choreographer.doFrame(Choreographer.java:632) 
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913) 
at android.os.Handler.handleCallback(Handler.java:751) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6688) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 
+0

あなたは見たことがありますかhttp://stackoverflow.com/questions/41687484/attempt-to-invoke-virtual-method-void-android-widget-editorselectionmodifiercuまたはhttp://stackoverflow.com/questions/37978026/java- lang-nullpointerexception-attempt-to-invoke-virtual-method-void-android-w –

+2

これは既知の問題のようです:https://code.google.com/p/android/issues/detail?id=228485 –

+0

まったく同じメソッドがクラッシュするわけではありませんが、それは私のアプリケーションではないという点で部分的に役立ちます。しかし、私はそれを回避する方法を知りたいです。私が言ったように、私のアプリはテキストを貼り付けるときに何もしていませんが:-( – Gavin

答えて

1

これは、コピー貼り付けメニューがどのような形、形または形でも表示されないようにする方法です。このバグは本当に私を夢中にしてくれました。サムスンのバグと同じように、あなたはそのコードを知っていますが、すぐに修正することはできません。 Android.Build.Model.toLowerCase()。のstartsWith( 'SM-G930')場合はとにかく、ここに不思議の壁が...

  1. 確認します。文字列全体と一致しない。最後の文字はマイナーバージョン識別子である。私はこのブール値をshouldBlockCopyPaste変数に保存しました。

  2. コピーペーストメニューが表示されないようにしたい場合は、一致するかどうかを確認してください。これはあなたが実際にやっている方法です!

は、これら2つの機能をオーバーライド

、あなたは私のshouldBlockCopyPasteブールに気づくでしょう、これは他のデバイスがブロックされますいけないそうです。

@Override 
    public ActionMode StartActionMode (ActionMode.Callback callback){ 
     if (shouldBlockCopyPaste) { 
     return null; 
     } else { 
     return super.StartActionMode(callback); 
     } 
    } 

    @Override 
    public ActionMode StartActionMode (ActionMode.Callback callback, int type){ 
     if (shouldBlockCopyPaste) { 
     return null; 
     } else { 
     return super.StartActionMode(callback, type); 
     } 
    } 
+0

この解決策は機能しませんでした。それはあなたと一緒でしたか?他に提案されているソリューションはありますか?ありがとう。 – user1510006

1

は私が

MyEditText.setMovementMethodを削除することで、それを解決する(新しいScrollingMovementMethod());

+0

私はそれをスクロールに使用していました。 – Awais

関連する問題