2014-10-17 96 views
-1

我在模型包类EditTextMonitor,例如:ClassCastException异常:android.widget.EditText不能转换到Models.EditTextMonitor

public class EditTextMonitor extends EditText{ 
private final Context mcontext; // Just the constructors to create a new EditText... 

public EditTextMonitor(Context context) { 
    super(context); 
    this.mcontext = context; 
} 

public EditTextMonitor(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.mcontext = context; 
} 

public EditTextMonitor(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    this.mcontext = context; 
} 


@Override 
public boolean onTextContextMenuItem(int id) { 
    // Do your thing: 
    boolean consumed = super.onTextContextMenuItem(id); 
    // React: 
    switch (id){ 
     case android.R.id.copy: 
      onTextCopy(); 
     case android.R.id.paste: 
      onTextCopy(); 
    } 
    return consumed; 
} 
public void onTextCopy(){ 
    ((TextEditorActivity)mcontext).startAmode(); 
} 
} 

以我java类:EditTextMonitor编辑=(EditTextMonitor)findViewById(R.id 。文本编辑器);

在XML视图文件中定义它单曲:

<Models.EditTextMonitor 
     android:id="@+id/texteditor" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_horizontal" 
     android:layout_margin="5dp" 
     android:background="@color/white" 
     android:ems="10" 
     android:gravity="top" 
     android:inputType="textMultiLine" 
     android:padding="5dp" 
     android:textAllCaps="false" /> 

但我有错误:

java.lang.RuntimeException: Unable to start activity 

ComponentInfo{com.atompark.atompark_sms/com.atompark.atompark_sms.TextEditorActivity}: java.lang.ClassCastException: android.widget.EditText cannot be cast to Models.EditTextMonitor 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2413) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471) 
at android.app.ActivityThread.access$900(ActivityThread.java:175) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:146) 
at android.app.ActivityThread.main(ActivityThread.java:5603) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassCastException: android.widget.EditText cannot be cast to Models.EditTextMonitor 
at com.atompark.atompark_sms.TextEditorActivity.prepereInterface(TextEditorActivity.java:194) 
at com.atompark.atompark_sms.TextEditorActivity.onCreate(TextEditorActivity.java:97) 
... 

我只在平板电脑上有这样的错误。

+0

,那么你可能没有改变所有的布局来使用这个类。确保您没有在其他资源集(例如'layout/sw600dp /')中具有“EditText”的布局。 – CommonsWare 2014-10-17 11:41:03

+0

在我所有的布局xml文件中,使用Models.EditTextMonitor – 2014-10-17 11:57:33

+0

可能需要使用完整的包名称而不是像Models.EditTextMonitor一样的yourpackagename.Models.EditTextMonitor。 – 2014-10-17 12:45:59

回答

0

在XML中使用的类名与适当的包名称为您TextEditorActivity

com.atompark.atompark_sms.TextEditorActivity 
相关问题