一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Android 开发Missing contentDescription attribute on image in XML

时间:2013-12-22 编辑:简简单单 来源:一聚教程网

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

热门栏目