Android 开发Missing contentDescription attribute on image in XML

作者:袖梨 2022-11-14

最近在做 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 移动到事项在数据库中相应的数据行。

相关文章

精彩推荐