Я провел некоторое исследование по моему вопросу в поведении android R.java при добавлении библиотечного проекта
Я заметил, что когда библиотечный проект добавляется в любой проект android,создано два файла 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;
}
В библиотеке примеров есть только одно действие, которое я запускаю из своего приложения, и это действие устанавливает основной макет.Теперь, если мы увидим, что id для «main» в R.java отличается в моем приложении и в проекте библиотеки.Я попытался напечатать значение id из библиотеки и его значение 0x7f030002, которое является значением в моем файле R.java приложения.
Теперь мое приложение не имеет основного макета и в библиотеке, когда я устанавливаю контент smain, оно устанавливает main.xml из проекта библиотеки !!Если я добавлю основной макет в свой проект приложения, lib установит этот main как его макет !!
Т.е. идентификатор для main берется из R.java моего приложения, и этот идентификатор отличается от идентификатора дляmain в библиотеке, но макет правильно выбран из библиотеки.
Как это происходит? Помогите
активность моего приложения:
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));
}
}
lib деятельность:
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);
}
}