错误:SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零

10
我有一个关于我的安卓应用程序的问题。我有一个按钮和一个事件相关联,但是当我第一次点击时会出现一个错误:“spans cannot have zero length”。但是当我第二次点击时,onclick事件可以正常运行...请看我的Java代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    final Button selectAltitude = (Button) findViewById(R.id.buttonAltitude1);
    final Button selectAltitude2 = (Button) findViewById(R.id.buttonAltitude2); 
    
    selectAltitude2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view){
            
                String tempAlt = selectAltitude2.getText().toString();
                selectAltitude2.setText(selectAltitude.getText().toString());
                selectAltitude.setText(tempAlt);
        }
    });
    }

带有两个按钮的XML代码(会出现弃用警告):

 <?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout
  xmlns:android="http://schemas.android.com/apk/res/android" 
  android:orientation="vertical" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent"
  android:background="@android:color/black"> 

<Button
        android:id="@+id/buttonAltitude1"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="39dp"
        android:layout_height="42dp"
        android:layout_marginLeft="250dp"
        android:layout_x="257dp"
        android:layout_y="419dp"
        android:background="@drawable/drawable1"
        android:focusableInTouchMode="true"
        android:gravity="center_vertical"
        android:includeFontPadding="false"
        android:linksClickable="true"
        android:minHeight="10dp"
        android:minWidth="64dp"
        android:paddingLeft="10dp"
        android:paddingRight="5dp"
        android:scrollHorizontally="true"
        android:text="@string/button_meters"
        android:textColor="@android:color/black"
        android:textSize="22sp"
        android:textStyle="bold" />
        
        <Button
            android:id="@+id/buttonAltitude2"
            style="?android:attr/buttonBarButtonStyle"
            android:layout_width="65dp"
            android:layout_height="42dp"
            android:layout_marginLeft="250dp"
            android:layout_x="295dp"
            android:layout_y="419dp"
            android:background="@drawable/drawable2"
            android:clickable="true"
            android:focusableInTouchMode="true"
            android:gravity="center_vertical"
            android:includeFontPadding="false"
            android:linksClickable="true"
            android:minHeight="10dp"
            android:minWidth="64dp"
            android:paddingLeft="15dp"
            android:paddingRight="5dp"
            android:scrollHorizontally="true"
            android:text="@string/button_feet"
            android:textColor="@android:color/black"
            android:textSize="25sp"
            android:textStyle="bold" />

当我第一次点击Log时,与之交互的内容为:

04-06 20:01:39.865: I/Sensors(6946): sendDelay --- 200000000 04-06

20:01:39.865: D/SensorManager(6946): JNI - sendDelay 04-06

20:01:39.865: I/SensorManager(6946): 设置正常延迟 = true 04-06

20:01:39.890: E/SpannableStringBuilder(6946): SPAN_EXCLUSIVE_EXCLUSIVE

spans 不能具有零长度 04-06 20:01:39.890:

E/SpannableStringBuilder(6946): SPAN_EXCLUSIVE_EXCLUSIVE spans 不能具有零长度

你能帮帮我吗?;)


请添加activity_main.xml的代码。 - MaciejGórski
请在Logcat中发布堆栈跟踪。 - Karakuri
现在已更新 :) 谢谢 - cpfp
3个回答

21

@Carlos Piedade 请阅读我在这里发布的答案和链接。 - Ajay S
非常抱歉让您等待了。我看到了您的回答,但是我不明白如何解决我的问题。您看到我在帖子中更新的信息和LogCat信息了吗?谢谢。 - cpfp
@CarlosPiedade 我看到了你更新的帖子。也许我分享的链接可以解决你的问题。请仔细阅读我的帖子。 - Ajay S
你能解释一下如何切换到安卓键盘吗?我不明白怎么进行这个更改。 - cpfp
1
@CarlosPiedade 你可以尝试按照这个指南进行操作。然而,你的默认设备键盘可能已经自带了SwiftKey(我的三星Galaxy Note 10.1就是这种情况)。 - Kirk

0

我知道我有点晚了。如果还有人需要帮助,需要第二次点击才能运行onclick事件,我已经移除了这个:

android:focusableInTouchMode="true"

现在,onClick事件将在第一次点击时起作用。


0

为了尝试调试这个错误,首先打开你的安卓终端/控制台并执行以下命令:

ps | grep THE_ERROR_PID_YOU_GET_(IT_IS_A_NUMBER)

然后,如果输出结果是您的应用程序...那么就是您的应用程序导致了错误。 尝试查找传递到布局中的空字符串

我曾经遇到过完全相同的问题,原因是我将一个空的字符串传递到我的布局中。 将“”更改为" "后,此错误消失了。

如果您无法从控制台输出中获取您的应用程序,则可能是其他原因(可能是 Android 键盘,如其他人所说)导致了该问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接