2012-05-23 3 views
1

Spannanle을 사용하고 싶습니다. 아래에있는 내 활동 파일은 다음과 같습니다응용 프로그램이 예기치 않게 중지되었습니다. 치명적인 예외 : MAIN

package com.Myapp; 

import android.app.Activity; 
import android.graphics.Color; 
import android.graphics.Typeface; 
import android.os.Bundle; 
import android.text.Spannable; 
import android.text.SpannableString; 
import android.text.style.ForegroundColorSpan; 
import android.text.style.StyleSpan; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MyappActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     TextView vw = (TextView)findViewById(R.id.request); 
     Spannable str = (Spannable)vw.getText(); 
     str.setSpan(new ForegroundColorSpan(Color.BLUE), 10, 15, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 


    } 
} 

내 main.xml에 파일은 다음과 같습니다 :

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

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="73dp" 
     android:layout_height="40dp" 
     android:src="@drawable/logo" /> 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="My APP" 
     android:textColor="@color/black" 
     android:textSize="19sp" 
     android:typeface="serif" /> 

    <TextView 
     android:id="@+id/request" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="30dip" 
     android:text="I want to collect from" /> 
</Linearlayout> 

내가 점점 오전 오류는 다음과 같습니다

05-23 22:40:54.279: E/AndroidRuntime(451): FATAL EXCEPTION: main 
05-23 22:40:54.279: E/AndroidRuntime(451): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Myapp/com.Myapp.MyappActivity}: java.lang.ClassCastException: java.lang.String 
05-23 22:40:54.279: E/AndroidRuntime(451): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
05-23 22:40:54.279: E/AndroidRuntime(451): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
05-23 22:40:54.279: E/AndroidRuntime(451): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
05-23 22:40:54.279: E/AndroidRuntime(451): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
05-23 22:40:54.279: E/AndroidRuntime(451): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-23 22:40:54.279: E/AndroidRuntime(451): at android.os.Looper.loop(Looper.java:130) 
05-23 22:40:54.279: E/AndroidRuntime(451): at android.app.ActivityThread.main(ActivityThread.java:3683) 
05-23 22:40:54.279: E/AndroidRuntime(451): at java.lang.reflect.Method.invokeNative(Native Method) 
05-23 22:40:54.279: E/AndroidRuntime(451): at java.lang.reflect.Method.invoke(Method.java:507) 
05-23 22:40:54.279: E/AndroidRuntime(451): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
05-23 22:40:54.279: E/AndroidRuntime(451): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
05-23 22:40:54.279: E/AndroidRuntime(451): at dalvik.system.NativeStart.main(Native Method) 
05-23 22:40:54.279: E/AndroidRuntime(451): Caused by: java.lang.ClassCastException: java.lang.String 
05-23 22:40:54.279: E/AndroidRuntime(451): at com.Myapp.MyappActivity.onCreate(MyappActivity.java:21) 
05-23 22:40:54.279: E/AndroidRuntime(451): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-23 22:40:54.279: E/AndroidRuntime(451): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 

내가 실종 무엇인가?

답변

2

사용하여 다음과 같은 코드 :

Spannable str = new SpannableString(vw.getText().toString()); 

또는

SpannableString str = new SpannableString(vw.getText().toString()); 

또는, 당신은 공장 사용할 수 있습니다

Spannable str = Spannable.Factory.getInstance().newSpannable(vw.getText()); 

그리고 당신은 또한을 추가 할 필요를 효과를 얻으려면 코드 끝 부분에 다음 줄을 추가하십시오.

vw.setText(str); 

BTW , vw.getText() 또는 vw.getText(). toString() 문제 :

+0

고마워없이 모두 작동합니다. 이제 잘 작동합니다. :) – Nerd

+0

나를 위해 작동하지 않습니다. –

관련 문제