ライブラリプロジェクトが追加されたときのandroid R.javaの動作に関する質問について調査し ました
ライブラリ プロジェクトを任意の Android プロジェクトに追加すると、2 つの R.java ファイルが作成されることがわかります。
project.R.java
public static final class layout {
public static int capture=0x7f030000;
public static int main=0x7f030001;
}
lib.R.java
public static final class layout {
public static final int add=0x7f030000;
public static final int capture=0x7f030001;
public static final int main=0x7f030002;
}
ライブラリとして設定されたプロジェクトには、次のような独自のR.javaがあります
public static final class layout {
public static int capture=0x7f030000;
public static int main=0x7f030001;
}
サンプル ライブラリには、アプリケーションから開始するアクティビティが 1 つだけあり、このアクティビティはレイアウト メインを設定します。ここで、R.java の「main」の ID がアプリケーションとライブラリ プロジェクトで異なることがわかります。ライブラリから id の値を出力しようとしましたが、アプリケーション R.java ファイルの値である 0x7f030002 が表示されました。
今、私のアプリケーションにはメインレイアウトがなく、コンテンツを smain に設定するとライブラリにあり、ライブラリプロジェクトから main.xml を設定します!! アプリケーション プロジェクトにメイン レイアウトを追加すると、ライブラリはこのメインをレイアウトとして設定します。
つまり、メインの ID はアプリケーションの R.java から取得され、この ID はライブラリのメインの ID とは異なりますが、レイアウトはライブラリから正しく選択されます。
これはどのように起こっているのですか 助けてください
私のアプリのアクティビティ:
import com.idg.test.lib.TestLibActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class TestProjectActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
Log.i("starting","oncraete main id "+ R.layout.main);
super.onCreate(savedInstanceState);
setContentView(R.layout.add);
startActivity(new Intent(this,TestLibActivity.class));
}
}
ライブラリ アクティビティ:
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class TestLibActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("Library","Library main id" +R.layout.main );
setContentView(R.layout.main);
}
}