最近在做 Android 开发,刚刚入门,遇到不少问题,累积了做重构时的习惯,遇到问题,好好解决,好好总结,于是整理如下:
一. Eclipse Error
1.'Missing contentDescription attribute on image' in XML
原因:缺少图片描述,在 ADT 16 开始会抛出这个警告,确保开发者为图片添加内容描述。
解决方法:为图片添加 android:contentDescription="@string/desc" 属性。
2. Buttons in button bars should be borderless
原因:两个 Buttons 放在一个布局里会被判断为按钮栏,需要添加样式取消它的边框。
解决方法: 在 Buttons 上添加属性 style="?android:attr/buttonBarButtonStyle" 。系统提示也可以在按钮的父布局上添加 style="? android:attr/buttonBarStyle" 属性,但是我在线性布局上测试了一下无效,求高手指导!
二. 开发技巧
1. 在新打开的 Activity 中触发前一个 Activity 作出调整
例如:原页面相应的 class 为 Main.class (主要代码)
public class Main extends Activity { Button page; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); page = (Button) findViewById(R.id.open); page.setOnClickListener(new OnClickListener(){ @Override public void onClick(View source) { Intent intent = new Intent(Main.this, NewPage.class); // 启动 intent 对应的 Activity ,并且等待其返回结果,其中 0 是标识码 startActivityForResult(intent, 0); } }); @Override public void onActivityResult(int requestCode, int resultCode, Intent intent){ if( requestCode == 0 && resultCode == 0 ){ // 确认请求标识码和反馈结果标识码同为 0 // 改变本页面或其他操作 } } }
public class NewPage extends Activity { Button cancel; Intent intent; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newpage); // 获取到上一个页面传过来的 Intent intent = this.getIntent(); cancel = (Button) findViewById(R.id.confirm); cancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View source) { // 反馈结果,将 intent 传回上一个 Activity ,这时在上一页触发 onActivityResult 方法,重写该方法可以对原页面作出调整 NewPage.this.setResult(0, intent); NewPage.this.finish(); } }); } }
如果需要在 Activity 之间传输数据,还可以使用 Bunble 在 intent 中保存和获取数据。
2. 获取列表中被点击事项的位置
扩展 BaseAdapter 类,重写 getView 方法,第一个方法即为事项的位置,若要配合 cursor 使用,则可以使用 cursor.moveToPosition(position) 把 cursor 移动到事项在数据库中相应的数据行。
本文由 Kayo Lee 发表,本文链接:https://kayosite.com/some-problems-of-android-development.html
评论列表
不懂得路过
没弄过Android,不知为何物,你是7号报道么?
@独自流浪 打酱油的玩了一下Android,发现跟写页面的逻辑挺像的!
11号报道了,已经开工两天!
没做过手机开发,难吗?
@ilikecss 逻辑上跟写页面比较相似,只是玩一下的话感觉不是很难,挺有趣的!
我准备试试用Xamarin试试.Net写Android程序
@Aivier 我刚刚入门,还是先练好原生的!
Android原生的UI设计特别坑爹。。。你有用什么其他比较好的设计软件弄布局文件吗??
@Ruii 我之前是直接用官方的 adt-bundle去做 Android,同感觉布局很坑爹。最近打算试试 android studio,它其中一个卖点就是功能强大的布局编辑器,可以拖拉 UI 控件并进行效果预览,希望这个软件有助于控制布局啦!