这里汇总了用C#和VS2015开发Android App时一些常见的最基本的问题及解决办法,以后有新的问题时都在这里一并回答。

问题1:项目无法正常运行,怎么回事?

【解答】

正常情况下,选择某个模拟器以后,它会自动启动并将程序部署到模拟器上。

如果是新建的项目出现的问题,一般都是环境安装不正确造成的。

如果是自己编写程序后出现的问题,一般都是清单配置不合适造成的。

不论是哪种情况,都可以通过下面的步骤找错。

(1)检查项目配置

主菜单-->【工具】-->【选项】-->【Xamarin】,查看环境配置是否正确。注意下面界面中的绿色选项和复选框都要正确。

(2)检查版本是否符合要求

按<F5>键调试之前,要确保你选择的模拟器和你的清单配置一致。

查看清单配置:在解决方案资源管理器中,双击【Properties】文件夹,在弹出的项目属性配置界面中,查看最低版本(第2项)是否满足你启动的模拟器版本要求:

(3)通过输出窗口查找错误

观察运行后【输出】窗口输出的内容,看是否有错误信息。

注意下面截图中下拉框中的几个选项都要看看是否有错。

一般都能从这个输出窗口输出的信息中看到是什么问题。

如果还找不到问题,就用logcat查看(下一步)。

(4)用logcat查看错误

点击启动logcat的快捷键以后,就会出现下面的界面:

单击上面的【Change Device】快捷键,就会出现下面的界面:

这个截图表示你还没有启动模拟器,此时,要确保按<F5>键时已经选择了某个模拟器:

选择模拟器后按<F5>键,它就会自动启动你选择的模拟器。

如果这个截图中没有可选择的模拟器,说明你的模拟器创建有问题。

(5)检查logcat输出的信息

如果你是独立启动的模拟器,而不是通过按<F5>键启动它,如下图所示:

当你选择的模拟器启动后,再次按照第(4)步那样运行logcat,应该看到下面的界面:

选中它找到的模拟器,按【OK】,然后观察它输出的内容:

(6)检查清单配置是否有错

注意清单文件(AndroidManifest.xml)中的首行:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="MyDemos.MyDemos" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">

这个android:installLocation="auto"表示如果找不到对应的.so文件,它会自动将其安装到模拟器上。

通过上面的步骤,一般都能把问题解决掉。

如果还找不到问题,请把步骤说详细点并截图,否则别人也看不明白你的问题是什么。

问题2:如何将文件复制到模拟器的SD卡上

【问题描述】有时候需要在模拟器上模拟用户通过手机下载的文件或程序,比如将音乐文件或视频文件从硬盘复制到模拟器的SD卡上,有没有简单的操作办法呢?

【解答】

办法如下:

1、找到你创建的模拟器文件,例如:

C:\Users\用户名\.android\avd\Galaxy_Api19.avd\sdcard.img

或者

C:\Users\用户名\.android\avd\Galaxy_Api23.avd\sdcard.img

2、用UltraISO或者其他虚拟光驱软件打开这个文件,然后复制硬盘上的文件,粘贴到该文件中SD卡对应的目录下,比如粘贴到Download文件夹下,然后保存.img文件。

以后再打开模拟器,就能看到Download文件夹下已经有这些文件了。这些文件的用法和你将文件下载到手机上以后的用法相同。

问题3:Resources.GetDrawable()被标记为已过时,如何解决?

Resources类中有两个静态方法从API level 22开始被标记为已过时:

过时的方法:

Resources.Drawable GetDrawable(int id)

替代方法1:

Context.GetDrawable(int)

其中,Context为上下文对象,例如:this. GetDrawable(…)

替代方法2:

Drawable Resources.GetDrawable(int id, Resources.Theme theme)

其中,第二个参数@theme可以为null。.

过时的方法:

Drawable Resources.GetDrawableForDensity(int id, int density)

替代的方法:

Drawable Resources.GetDrawableForDensity(int id, int density, Resources.Theme theme)

其中,第二个参数@theme可以为null。.

这两个方法被标记为已过时的原因:在比Android 4.1版本更低的版本中,当传递的资源ID是另一个Drawable资源的别名时,过时的方法不能正确地获取到最终配置density,即别名资源(alias resource)的density配置不同于实际资源导致返回的Drawable对象的density不正确,这样缩放时将出错。

问题4:创建或编辑.cs文件时,有时会出现基类颜色不变且智能提示失效的情况,怎么回事?

这是因为你刚添加的资源文件(比如布局文件)有错,在你更正这些错误之前,它不希望你继续编辑.cs文件,因为继续编辑会导致更多错误。

解决办法:查看你刚添加的资源文件(.xml或者.axml),把错误更正后,基类颜色和智能提示就会自动变为可用,此时就可以继续编辑.cs文件了。

【Android】常见问题解答的更多相关文章

  1. Delphi XE5 常见问题解答

    Delphi XE5 常见问题解答 有关于新即时试用的问题吗?请看看 RAD Studio 即时试用常见问答. 常见问题 什么是 Delphi? Embarcadero? Delphi? XE5 是易 ...

  2. web前端工程师面试技巧 常见问题解答

    web前端工程师面试技巧 常见问题解答 每年的春招是各企业需求人才的黄金时期,不少的前端大牛或者前端新手在面试时候不知道怎么来回答面试官的问题,下面来看下我转载的这篇文章吧,希望对从事前端工作的你有所 ...

  3. MySQL同步常见问题解答(自己的小心得)

    前几天刚刚注册了博客园,我想写一些技巧性的教程,今天给大家分享一个MySQL同步常见问题解答. Q:如果主服务器正在运行并且不想停止主服务器,怎样配置一个从服务器? A:有多种方法.如果你在某时间点做 ...

  4. Android自动化压力测试之Monkey Test Android常见的错误类型及黑白名单的使用方法(四)

    Android常见的错误类型有两种 1.ANR类型 1)在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸) 2)BroadcastReceiver在10秒内没有执行完毕 2.Crash类型 1)异 ...

  5. SSL/TLS 高强度加密: 常见问题解答

    关于这个模块 mod_ssl 简史 mod_ssl会受到Wassenaar Arrangement(瓦森纳协议)的影响吗? mod_ssl 简史 mod_ssl v1 最早在1998年4月由Ralf ...

  6. Android 常见工具类封装

    1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...

  7. android 常见死机问题--log分析

    http://blog.csdn.net/fangchongbory/article/details/7645815         android 常见死机问题--log分析============ ...

  8. [!!!!!]Inno Setup教程-常见问题解答

    [转]Inno Setup教程-常见问题解答 功能 * 翻译 Inno Setup 文字  * 它支持 MBCS (多字节字符集) 吗?  * 将来会支持 Windows Installer 吗?   ...

  9. 英特尔® 实感™ SDK 前置摄像头 (F200) 常见问题解答

    原文地址 https://software.intel.com/zh-cn/articles/intel-realsense-sdk-faq-for-front-facing-camera-f200? ...

  10. 我个人有关 Azure 网络 SLA、带宽、延迟、性能、SLB、DNS、DMZ、VNET、IPv6 等的 Azure 常见问题解答

    Igor Pagliai(微软)   2014 年 9月 28日上午 5:57  年 11 月 3 年欧洲 TechEd 大会新宣布的内容). 重要提示:这篇文章中我提供的信息具有时间敏感性,因为这些 ...

随机推荐

  1. ArcGIS高程Z值的去除方法

    在ArcGIS中,我们常用的几何类型有点.线.面.体(体,在涉及三维的情况下使用),但在这之外,可能会遇到带ZM的类型,如图所示,面ZM,它与面类似,但比面多两个字段. 在编辑中查看草图属性可看到Z值 ...

  2. 批量合并GDB

    在实际操作中,经常对数据库文件进行合并.裁切等.如果遇到gdb比较多,要素层比较多,而且还存在数据集.虽然ArcGIS中的批量处理的功能,但填写参数过程也比较麻烦,如果一次性处理过多,程序容易停止工作 ...

  3. Linux对文件归档和压缩(学习笔记八)

    一.归档和压缩 压缩命令工具:gzip,bzip2 归档命令工具:tar 二.压缩 2.1.gzip gzip是一种标准的.广泛应用的文件压缩和解压缩实用工具.gzip允许文件并置.用gzip压缩文件 ...

  4. #define中的“#”和“##”的作用

    在#define中,标准只定义了#和##两种操作: #用来把参数转换成字符串: ##则用来连接两个前后两个参数,把它们变成一个字符串.

  5. An application icon

    The application icon is a small image which is usually displayed in the top left corner of the title ...

  6. SpringMVC的入门例子

    MVC框架是什么 模型-视图-控制器(MVC)是一个众所周知的以设计界面应用程序为基础的设计模式.它主要通过分离模型.视图及控制器在应用程序中的角色将业务逻辑从界面中解耦.通常,模型负责封装应用程序数 ...

  7. MySQL 联合索引测试3

    接上一篇文章: http://www.cnblogs.com/xiaoit/p/4430387.html 有时候会出现某字段建立一个索引,但是查看执行计划的时候发现还是全扫了表? 可以强制走下索引看看 ...

  8. navicat oracle library is not loaded

        navicat oracle library is not loaded CreationTime--2018年8月9日19点13分 Author:Marydon 1.情景展示 Navicat ...

  9. 【BIRT】在页面上展示xxxx年xx月xx日

    我们在做报表开发的时候经常会遇到一个问题,就是需要在报表上展示”xxxx年xx月xx日”这种日期,例如:需要在报表展示日期如下图: 我们现在数据库存储的日期是:20171231 那么我们如何转化为 这 ...

  10. 激活web容器对静态资源的默认servlet处理

    在某些servlet的url匹配模式使用/时会拦截一些静态的资源的请求导致无法正确访问,可以采取web容器默认的servlet来处理,当然那些mvc一般也都提供了处理的方法,用何种方式可以自行决定,这 ...