android - method - NoSuchFieldError en findViewById()
cannot resolve method findviewbyid (4)
Hay dos proyectos de Android que quiero fusionar, uno es Main y el otro está vinculado como Biblioteca. Pero tengo algunos problemas en esta línea:
Button modificarC;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_menu_calificaciones);
modificarC = (Button) findViewById(R.id.btn_aseso); //HERE
Probé Project Clean ... también tengo android-support-v4.jar en mis dependencias
Y este es mi rastro:
04-24 19:39:52.568: E/AndroidRuntime(9486): FATAL EXCEPTION: main
04-24 19:39:52.568: E/AndroidRuntime(9486): java.lang.NoSuchFieldError: com.utez.sistemas.sam.R$id.btn_aseso
04-24 19:39:52.568: E/AndroidRuntime(9486): at com.utez.sistemas.sam.calificaciones.CalificacionesActivity.onCreate(CalificacionesActivity.java:67)
04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.Activity.performCreate(Activity.java:4465)
04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.ActivityThread.access$600(ActivityThread.java:127)
04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
04-24 19:39:52.568: E/AndroidRuntime(9486): at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 19:39:52.568: E/AndroidRuntime(9486): at android.os.Looper.loop(Looper.java:137)
04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.ActivityThread.main(ActivityThread.java:4507)
04-24 19:39:52.568: E/AndroidRuntime(9486): at java.lang.reflect.Method.invokeNative(Native Method)
04-24 19:39:52.568: E/AndroidRuntime(9486): at java.lang.reflect.Method.invoke(Method.java:511)
04-24 19:39:52.568: E/AndroidRuntime(9486): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
04-24 19:39:52.568: E/AndroidRuntime(9486): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
04-24 19:39:52.568: E/AndroidRuntime(9486): at dalvik.system.NativeStart.main(Native Method)
También aquí está el diseño:
<LinearLayout
style="@style/LoginFormContainer"
android:layout_width="253dp"
android:layout_height="260dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="30dp"
android:orientation="vertical" >
<Button
android:id="@+id/btn_alta"
android:layout_width="match_parent"
android:layout_height="63dp"
android:layout_marginLeft="25dp"
android:layout_marginTop="5dp"
android:background="@drawable/btn_altacalif"
android:contentDescription="@string/action_sign_in_register"
android:paddingLeft="32dp"
android:paddingRight="32dp"
android:textAlignment="center" />
<Button
android:id="@+id/btn_aseso"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginLeft="25dp"
android:layout_marginTop="5dp"
android:layout_weight="0.16"
android:background="@drawable/btn_modcalif"
android:contentDescription="@string/action_sign_in_register"
android:paddingLeft="32dp"
android:paddingRight="32dp"
android:textAlignment="center" />
</LinearLayout>
Bueno, yo soy chino. Mi inglés no es bueno.
Yo también tengo la pregunta.
La solución puede ser: el nombre del archivo xml se repite, por ejemplo: : a.xml está en su proyecto de biblioteca, al mismo tiempo, a.xml está en su proyecto principal. Por lo tanto, cambie uno de los nombres xml.
La limpieza del proyecto funcionó para mí.
Para profundizar en la solución de @Moxor, puede:
- Decalare un xml de diseño ficticio y asigne los ID que faltan a algunas vistas ficticias.
- Declare las identificaciones faltantes como recursos, de la misma manera que declara un recurso de cadena: http://developer.android.com/guide/topics/resources/more-resources.html#Id
Tuve el mismo error y resulta que el recurso fue reemplazado.
Si tiene un proyecto que funciona como una biblioteca que declara algún ID en un archivo XML dado, entonces su proyecto principal redefine ese XML, el ID original desaparece, pero no verá el error hasta el tiempo de ejecución.
En mi caso, un socio eliminó y confirmó el XML del proyecto, luego lo volvió a agregar al proyecto de la biblioteca. Subclipse no pareció notarlo porque estaba actualizado, pero el XML estaba allí en el proyecto principal.