Подтвердить что ты не робот

NoSuchFieldError на findViewById()

Есть два проекта андроида, которые я хочу объединить, один - Main, а другой связан как Библиотека. Но у меня есть некоторые проблемы на этой линии:

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

Я попробовал Project Clean... также у меня есть поддержка android-v4.jar в моих зависимостях

И это мой след:

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)

Также здесь находится макет:

<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>
4b9b3361

Ответ 1

У меня была такая же ошибка, и оказалось, что ресурс был переопределен.

Если у вас есть один проект, работающий как библиотека, которая объявляет некоторый идентификатор в данном XML файле, то ваш основной проект переопределяет этот XML, исходный идентификатор отсутствует, но вы не увидите ошибку до времени выполнения.

В моем случае партнер удалил и передал XML из проекта, а затем добавил его обратно в проект библиотеки. Subclipse, похоже, не заметил этого, потому что я был в курсе событий, но XML был в основном проекте.

Ответ 2

Хорошо, я китайский. Мой английский не очень хорошо.

У меня тоже вопрос.

Решение может быть: Имя xml файла повторяется, например: a.xml находится в вашем проекте библиотеки, в то же время a.xml находится в вашем основном проекте. поэтому, пожалуйста, измените одно из имен xml.

Ответ 3

Чтобы разработать решение @Moxor, вы можете:

  • Decalare dummy layout xml и присвойте отсутствующие идентификаторы некоторым фиктивным представлениям.
  • Объявить недостающие идентификаторы как ресурсы, так же, как вы объявляете строковый ресурс: http://developer.android.com/guide/topics/resources/more-resources.html#Id

Ответ 4

Уборка проекта работала для меня.