Android新手常见问题(一)

【1】AAPT2 error: check logs for details

File->Settings->Build->Gradle一看path里有中文

最根本的原因是因为user里面的用户的文件夹是中文的,改成英文就可以了!其他解决方案不做阐述,因为建议改成英文,否则问题无穷!

win10系统以前是中文用户名改成英文方法:

  1、新建一个临时管理员账户

  2、登录管理员账户

  3、在C:\Users\暖风 改成C:\Users\nf

  4、cmd->regedit打开注册表,找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList,然后挨个文件夹打开ProfileImagePath找到你的中文名字,改成英文的就可以了

  5、注销临时管理员账户,登录以前账户,删除临时管理员账户即可!

【2】Android Studio --“Cannot resolve symbol”

Android Studio 无法识别同一个 package 里的其他类,将其显示为红色,但是 compile 没有问题。鼠标放上去后显示 “Cannot resolve symbol XXX”,重启 Android Studio,重新 sync gradle,Clean build 都没有用。 
多半是因为 Android Studio 之前发生了错误,某些 setting 出了问题。解决方法如下: 
点击菜单中的 “File” -> “Invalidate Caches / Restart”,然后点击对话框中的 “Invalidate and Restart”,清空 cache 并且重启。语法就会正确的高亮了。

【3】Android Switch constant expression required

Android Library工程写代码需要注意switch … case语句对资源id的引用,会引发编译错误:case expressions must be constant expressions

通常android工程生成的资源R.java,资源id声明如下:

 

public static final int main=0x7f030004;

 

而对于library工程,资源id声明如下:

public static int main=0x7f030004;

缺少了final,因此使用R.id 的switch … case语句会编译失败。

解决方案:将switch … case替换成if … else语句。

switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();
break;
default:
}
int item_id = item.getItemId();
if(item_id == R.id.add_item){
Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
}else if(item_id == R.id.remove_item){
Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();
}

猜你喜欢

转载自www.cnblogs.com/c2016c/p/9399193.html
今日推荐