好的,所以这段代码在任何其他设备上运行得非常好,但在三星设备上崩溃了。我似乎无法弄明白为什么,但我知道如果我使用TextView它不会崩溃。问题是,我需要一个EditText用于此字段,它可以包含多个链接。我花了一天时间寻找无效的解决方案,所以我想我会在这里发帖:
注意:这似乎适用于我测试过的Nexus和Motorola设备: 是否有一些我可能已经错过的解决方法,因为我会猜测三星如何在EditText框中处理链接?
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText t3 = (EditText) findViewById(R.id.text3);
t3.setText(
Html.fromHtml(
"<b>text3:</b> Text with a " +
"<a href=\"http://www.google.com\">link</a> " +
"created in the Java source code using HTML."));
t3.setMovementMethod(LinkMovementMethod.getInstance());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
如果有帮助,请查看堆栈跟踪:
03-21 11:17:34.897: E/AndroidRuntime(1810): FATAL EXCEPTION: main
03-21 11:17:34.897: E/AndroidRuntime(1810): java.lang.NullPointerException
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.widget.Editor.onTouchUpEvent(Editor.java:1927)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.widget.TextView.onTouchEvent(TextView.java:8865)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.View.dispatchTouchEvent(View.java:7817)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
03-21 11:17:34.897: E/AndroidRuntime(1810): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2326)
03-21 11:17:34.897: E/AndroidRuntime(1810): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1612)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.app.Activity.dispatchTouchEvent(Activity.java:2494)
03-21 11:17:34.897: E/AndroidRuntime(1810): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2274)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.View.dispatchPointerEvent(View.java:8025)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4668)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4556)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4150)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4207)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4176)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4261)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4184)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4318)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4150)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4207)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4176)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4184)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4150)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6302)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6240)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6211)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6382)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:188)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.os.MessageQueue.nativePollOnce(Native Method)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.os.MessageQueue.next(MessageQueue.java:132)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.os.Looper.loop(Looper.java:124)
03-21 11:17:34.897: E/AndroidRuntime(1810): at android.app.ActivityThread.main(ActivityThread.java:5455)
03-21 11:17:34.897: E/AndroidRuntime(1810): at java.lang.reflect.Method.invokeNative(Native Method)
03-21 11:17:34.897: E/AndroidRuntime(1810): at java.lang.reflect.Method.invoke(Method.java:525)
03-21 11:17:34.897: E/AndroidRuntime(1810): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
03-21 11:17:34.897: E/AndroidRuntime(1810): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
03-21 11:17:34.897: E/AndroidRuntime(1810): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:6)
Clickable links and copy/paste menu in EditView in android
如果有人对答案感兴趣,这篇文章对我有所帮助。