一般情况下,id都是安卓自动生成的。使用时只要用R.id.xx就可以了。但是,在合作开发安卓时,需要将自己开发的代码部分打成jar包,甚至做混淆。

这就需要使用java的反射机制。在取id时使用如下类,避免了硬编码。res文件只能乖乖的交给合作方了。当然可能还有更好的方法解决这个问题。

使用方法如:

(ImageButton) findViewById(GetItemId.getIdResIDByName(this, "title_exit"));

import java.lang.reflect.Field;

import android.content.Context;
import android.util.Log;

public class GetItemId {

public static int getItemId(Context paramContext, String paramString1,
   String paramString2) {
  try {
   Class<?> localClass = Class.forName(paramContext.getPackageName()
     + ".R$" + paramString1);
   Field localField = localClass.getField(paramString2);
   int i = Integer.parseInt(localField.get(localField.getName())
     .toString());
   return i;
  } catch (Exception localException) {
   Log.e("getIdByReflection error", localException.getMessage());
  }

return 0;
 }

public static int[] getItemIdArray(Context paramContext,
   String paramString1, String paramString2) {
  try {
   Class<?> localClass = Class.forName(paramContext.getPackageName()
     + ".R$" + paramString1);
   Field localField = localClass.getField(paramString2);
   int[] i = (int[]) localField.get(localField.getName().toString());
   return i;
  } catch (Exception localException) {
   Log.e("getIdByReflection error", localException.getMessage());
  }

return null;
 }

public static int getLayoutResIDByName(Context context, String name) {
  return context.getResources().getIdentifier(name, "layout",
    context.getPackageName());
 }

public static int getIdResIDByName(Context context, String name) {
  return context.getResources().getIdentifier(name, "id",
    context.getPackageName());
 }

public static int getStringResIDByName(Context context, String name) {
  return context.getResources().getIdentifier(name, "string",
    context.getPackageName());
 }

public static int getDrawableResIDByName(Context context, String name) {
  return context.getResources().getIdentifier(name, "drawable",
    context.getPackageName());
 }
}

如何在协作开发安卓项目中打jar包给合作人的更多相关文章

  1. Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图(转载)

    Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图 2017年04月05日 10:53:13 李学凯 阅读数:104997更多 所属专栏: Intellij Idea   ...

  2. Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图

    Maven 组件界面介绍 如上图标注 1 所示,为常用的 Maven 工具栏,其中最常用的有: 第一个按钮:Reimport All Maven Projects 表示根据 pom.xml 重新载入项 ...

  3. 如何查看Maven项目中的jar包依赖树情况

    对于开发人员,我想大家对于Maven应该不会陌生吧,如何在一个Maven项目中对这个项目中所引用的第三方jar包有个直观的了解呢? 其实实现很简单,只需要借助于Maven的一条命令,如下所示: mvn ...

  4. Android项目中打jar包 和 使用

    第一步,把普通的android project设置成库项目 库项目也是一个标准的android项目,因此你先创建一个普通的android项目. 这个项目可以起任何的名称,任何的报名,设置其他需要设置的 ...

  5. Java开发过程中开发工具Eclipse中导入jar包的过程

    欢迎欣赏我的第二篇随笔.我们在创建好一个动态网站项目之后,如果没有部署maven的情况下,你可以按照以下的方法,直接把要用的jar包导入你的工程中,而不用再部署maven. 例如在使用JDBC编程时需 ...

  6. 向eclipse的JavaWeb项目中导入jar包--备忘录

    一:      在你所需的jar包网站下载对应的jar包.如org.apache.commons.lang.jar. 二:复制粘贴到该JavaWeb的WEB-INF目录下的lib目录下,如: 三:右键 ...

  7. Android Studio向项目中导入jar包的方法

    第一步: 切换到"Project"视图,找到app --> libs目录 第二步: 将需要导入的jar包粘贴到libs目录中,此时还不能看到jar包中的内容 第三步: 右键点 ...

  8. 向eclipse的JavaWeb项目中导入jar包

    一:      在你所需的jar包网站下载对应的jar包.如org.apache.commons.lang.jar. 二:复制粘贴到该JavaWeb的WEB-INF目录下的lib目录下,如: 三:右键 ...

  9. IntelliJ IDEA Java项目中添加jar包

    1. 事先下载完成需要的javacsv.jar包. java项目在没有导入该jar包之前,显示如下图所示 2. 点击 File ->  Project Structure(快捷键 Ctrl + ...

随机推荐

  1. HDU 5339 Untitled (暴力枚举)

    题意:给定一个序列,要求从这个序列中挑出k个数字,使得n%a1%a2%a3....=0(顺序随你意).求k的最小值. 思路:排个序,从大的数开始模起,这是因为小的模完还能模大的么? 每个元素可以选,也 ...

  2. jupyterhub

    pkill jupyterhub #激活python环境 pyenv activate jupyterhub #启动jupyterhub /fly/start_jupyterhub.sh cd ~/r ...

  3. 使用dev http client调试restful API开发

    安装chrome 插件:dev http client, 使用VPN打开 google网站,

  4. HDU 4662 MU Puzzle 2013 Multi-University Training Contest 6

    现在有一个字符串"MI",这个字符串可以遵循以下规则进行转换: 1.Mx 可以转换成 Mxx ,即 M 之后的所有字符全部复制一遍(MUI –> MUIUI) 2.III 可 ...

  5. table 锁定表头,出滚动对齐

    前一段时间来了一个汇总的需求,想锁定表头,这个问题在网上找了老半天,实现起来都比较麻烦,经过这几天的摸索终于找到一个简洁的处理方法 下面介绍一下如何处理的: 1.thead 和tbody 放两个tab ...

  6. centos mysq table is read only

    1.进入mysql数据库目录,使用命令"chown -R mysql <数据库文件夹名称>" 2. "chgrp -R mysql <数据库文件夹名称& ...

  7. 深入理解Linux内核-第七章 进程调度

    原文:http://blog.csdn.net/sailor_8318/article/details/2460177

  8. pcap文件的文件头的link type

    http://www.tcpdump.org/linktypes.html Link-layer header type values LINKTYPE_ name LINKTYPE_ value C ...

  9. Spring 框架概述

    ◆简介 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 Spring 框架是一个分层架构,由 7 个定义良好的模块组成. ...

  10. Yii入门,登录

    验证和授权在页面需要限制访问时用到.验证就是确认某人就是他所声称的那个人.通常涉及到用户名和密码,但也包含其他方式,例如智能卡,指纹等.授权是在验证用户后,查明他是否被允许管理指定的资源.通常判断他是 ...