1.根据R中属性的内存地址获取属性的名称:
? ?? getString(R.string.app_name)
??2. 根据R中属性的名称获取属性对应的内存地址:
getResources().getIdentifier("icon", R.drawable.class.getSimpleName(), R.class.getPackage().getName())
?
?
测试代码:
?
public class RSourceActivity extends Activity { private static final String TAG = "RSourceActivity"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.e(TAG, "===:" + getString(R.string.app_name)); Log.e(TAG, "===:" +getRInt("icon")); Log.e(TAG, "===:" + getResources().getIdentifier("icon", R.drawable.class.getSimpleName(), R.class.getPackage().getName())); } /** * 根据R中资源的名称获取对应的内存地址 * @param name * @return */ private int getRInt(String name){ Field[] fields = R.drawable.class.getDeclaredFields(); for (Field field : fields) { if (field.getName().equals(name)) { try { return field.getInt(R.drawable.class); } catch (Exception e) { e.printStackTrace(); } } } return 0; }}?