【安卓学习之第三方库】库的使用3-不能访问资源ID问题

刚研究Android Studio,常常都是将Eclipse的项目导入到Android Studio中,在这个过程中,常常会遇到一些问题,在这里做一个笔记记录:
  
█ 问题重现:

这里写图片描述
 ● 代码:

public class TestDialog extends Dialog implements OnClickListener {
	private TextView btnText1, btnText2;

	public TestDialog(Context context) {
		super(context);
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.dialog_myinputpass);
		initUI();
	}

	private void initUI() {
		btnText1 = (TextView)findViewById(R.id.button1_text);
		btnText2 = (TextView)findViewById(R.id.button2_text);
		btnText1.setOnClickListener(this);
		btnText2.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.button1_text:
			break;
		case R.id.button2_text:
			break;
		default:
			break;
		}
	}
}

● 问题:

case expressions must be constant expressions 1 quick fix available: Migrate Android Code
 

█ 问题原因:

● 该项目是库项目,被主项目所引用:
这里写图片描述
 ● 主要原因:

  switch-case语句中的case只能使用常量,而当项目就设定为库项目(Is Library)时,在编译时,可以在R.java文件中看到所有的R.id.XXX 都是public static int修饰,也就是静态变量。   正常的主项目,在编译后生成的R.java文件中,都是 public final static int修饰的,即为常量,这个时候可使用switch-case语句。
   ● Eclipse的提示: ![这里写图片描述](https://img-blog.csdnimg.cn/img_convert/894a33649f60adbb00f16bf628792ed4.png)

█ 解决方法:

● 要么不要作为库项目,即将lib勾去掉,变成主项目,这样R.id.XXX 都变成常量,就可以用该语句。
 ● 要么就是将Switch语句换成if-else语句。if-else语句可以使用变量作为判定条件。这里是作为库项目使用,因此只能选择该种方法解决。
 ● 将Switch语句换成if-else语句可以使用Eclipse的自带工具实现,不需要手工一个个去修改,将鼠标点击到Switch位置,按下Ctrl+数字键1就会自动弹出提示。
 这里写图片描述

	@Override
	public void onClick(View v) {
		int id = v.getId();
		if (id == R.id.button1_text) {
		} else if (id == R.id.button2_text) {
		} else {
		}
	}

● 值得注意的是,每个case 后都要加上break,否则按下Ctrl+数字键1将会提示:No suggestions available!
这里写图片描述

█ 相关资料:

  1. switch语句报错

● android switch语句报错:case expressions must be constant expressions
  
2. switch-case语句访问资源ID

● 在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案

  1. 库项目中对R.id资源的引用方式

● 库项目中对R.id资源的引用方式

转载请注明出处:http://blog.csdn.net/ljb568838953/article/details/53642026

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值