2014-10-17 2 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 `s вид файла определяется:

<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

+0

во всех моих XML-файлах макета, используя Models.EditTextMonitor –

+0

Может быть, вам нужно использовать полное имя пакета, а не только Model.EditTextMonitor, например yourpackagename.Models.EditTextMonitor. –

ответ

0

В XML имя использование класса с правильным именем пакета, как для TextEditorActivity

com.atompark.atompark_sms.TextEditorActivity 
Смежные вопросы