2013-04-25 5 views
25

マージしたい2つのアンドロイドプロジェクトがあり、1つはメインで、もう1つはライブラリとしてリンクされています。 しかし、私は、このライン上でいくつかのトラブルを持っている:NoSuchFieldError on findViewById()

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 

私はプロジェクトのクリーンを試してみました...また、私は私の依存関係

をアンドロイド・サポート・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> 
+0

'btn_aseso'は' activity_menu_calificaciones'レイアウトXMLファイルのフィールドですか? –

+0

はい、私はすでに私の質問を編集しました。 –

+0

あなたのレイアウトは私にはよく見えます。あなたのプロジェクトをセットアップしたものでなければなりません。私は 'activity_menu_calificaciones'ファイルがプロジェクトの一つにしか存在しないと仮定しています。 –

答えて

58

私は同じエラーを持っていたし、それは目を判明しますリソースがオーバーライドされました。

特定のXMLファイルでいくつかのIDを宣言するライブラリとして働いているプロジェクトがある場合は、 メインプロジェクトでそのXMLが再定義されますが、元のIDはなくなりますが、実行時までエラーは表示されません。

私の場合、パートナーはプロジェクトからXMLを削除してコミットし、それをライブラリプロジェクトに追加しました。 Subclipseは私が最新であったため気づいていないようですが、XMLはメインプロジェクトにありました。

+4

はい、それです!同じ名前の2つのレイアウトファイル。ありがとうございました! – JerabekJakub

+1

愚かな間違いのような...簡単に修正するが見つけるのは難しい...ちょうどあなたのポストのために同じように間違いをした。 – velval

+1

@JerabekJakub あなたのコメントは私の仕事の日を節約しました:) 私は自分のプロジェクトで同じ名前のxmlsを使用していて、名前を変更してエラーが発生したことを発見しました – Jayanth

37

まあ、私は中国人です。私の英語は良くありません。

私も質問がありました。

ソリューションは、ことがあります xmlファイルの名前が繰り返され、例えば:a.xmlは、あなたのライブラリプロジェクトであり、同時に、a.xmlはあなたの主なプロジェクトです。 xmlの名前の1つを変更してください。 Moxorのソリューション@については詳しく説明し

+0

これは私を助けました。私はこの問題を抱えています。アクティビティのXML名を変更するのは難しかった。しかし、私は本当にこれの理由を考えることはできません。 – JaydeepW

+0

これは助けられ、私の問題は今解決されました。私は2つのlibプロジェクトの中でxmlファイルを重複していました。フレームワークは1つで、2つ目はcommonです。 commonからxmlを削除して問題を解決しました。 – Tahir

+0

共通のlibプロジェクトにあったxmlファイルにフィールドがありませんでした。フレームワークのファイルは、一度共通のlibプロジェクトに置き換えられました。共通のxmlには、そのフィールドがありませんでしたので、エラーを出していました。愚かな間違い:P – Tahir

2

、次のいずれかを実行します

  1. DecalareダミーレイアウトXML、およびいくつかのダミービューに欠落しているIDを割り当てます。
  2. 資源、あなたは文字列リソースを宣言するのと同じ方法として欠落しているIDを宣言します。プロジェクトの清掃http://developer.android.com/guide/topics/resources/more-resources.html#Id
-1

は私のために働きました。

+0

この問題は、xmlファイルが重複していて、ライブラリプロジェクトとメインプロジェクトに関連しています – Mahesh

関連する問題