当前位置: 代码迷 >> Android >> Android应用开发学习札记
  详细解决方案

Android应用开发学习札记

热度:98   发布时间:2016-05-01 15:39:59.0
Android应用开发学习笔记
收集了一下日常android应用开发过程中遇到的问题,简单的进行了总结,于是有了这个帖子,欢迎广大android爱好者留言!
1 楼 azone.mobi 2010-05-05  
2010-04-10: savedInstanceState对象介绍
代码:
    ...
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
    }   

说明:任何Activity类都需要实现onCreate方法,savedInstanceState对象会保存Activity上一次关闭时的状态;
2 楼 azone.mobi 2010-05-05  
2010-04-11: 在代码中如何设置Activity对于的content view
代码:
    ....
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.report);
        ...
    }
说明:content view对应的就是一个layout xml文件,编译好后可以在项目的R文件中找到;
3 楼 azone.mobi 2010-05-05  
2010-04-12: 如何查找Content View中的控件
代码:
    ...
    Button button = (Button) findViewById(R.id.button);
    TextView tv = (TextView) findViewById(R.id.text_view);
    ...
4 楼 azone.mobi 2010-05-05  
2010-04-12: 如何设置控件的属性
代码:
    ...
    TextView tv = (TextView) findViewById(R.id.text_view);
    tv.setText(R.string.result_title); //使用引用值

    tv.setText("属性值"); //直接设置属性值
   
    tv.setText(getText(R.string.result_title) + "属性值"); //组合值 正确的设置方式

    //tv.setText(R.string.result_title + "属性值"); //组合值 错误的设置方式
   
    ...
说明:想查找需要设置属性的控件,然后设置属性,设置属性是如果属性值是一个组合值(如多个字符串相加)且有使用
应用值时需要先获取引用值;
5 楼 azone.mobi 2010-05-05  
2010-04-13: 关于对话框(Dialog)
代码1:最基本的对话框
    new AlertDialog.Builder(MyActivity.this)
    .setTitle("Android dialog...")
    .setMessage("这是android对话框!")
    .show();
说明:可以在一些空间的事件响应中添加对话框;

代码2:为对话框添加肯定按钮(Positive Button)
    new AlertDialog.Builder(MyActivity.this)
    .setTitle("Android dialog...")
    .setMessage("这是android对话框!")
    .setPositiveButton(R.string.about_ok_label, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface arg0, int arg1) {
        }
    })
    .show();
说明:添加Positive Button的dialog必须要按系统的回退按钮在dailog才会推出,添加Positive Button后按Positive Button后
就会直接关闭dailog;

代码3:为对话框添加浏览按钮(Negative Button)
    new AlertDialog.Builder(MyActivity.this)
    .setTitle("Android dialog...")
    .setMessage("这是android对话框!")
    .setNegativeButton(R.string.homepage_label, new DialogInterface.OnClickListener(){
        public void onClick(DialogInterface arg0, int arg1) {
            Uri uri = Uri.parse(getText(R.string.homepage_path).toString());
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
        }
    }).show();
6 楼 azone.mobi 2010-05-05  
2010-04-14: Toast消息框
代码:
    ...
    Toast.makeText(MyActivity.this, "Toast消息框测试", Toast.LENGTH_SHORT).show();
    ...

说明:dialog要求用户必须要按下某些按钮才可以继续原程序,而消息框则这只是给予提示,不会打断用户的操作;
7 楼 azone.mobi 2010-05-05  
2010-04-15: 为应用添加菜单(menu)
代码1:使用代码方式添加菜单

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, MENU_ABOUT, 0, "About...")
        .setIcon(android.R.drawable.ic_menu_help);
        menu.add(0, MENU_QUIT, 0, "Quit")
        .setIcon(android.R.drawable.ic_menu_close_clear_cancel);
       
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case MENU_QUIT :
            finish();
            break;

        default :
            break;
        }
        return super.onOptionsItemSelected(item);
    }

说明:为了添加菜单,您的activity类需要实现onCreateOptionsMenu和onOptionsItemSelected两个方法,其中
onCreateOptionsMenu方法中提供创建菜单的实现,onOptionsItemSelected方法中提供菜单选择事件响应实现;
在创建菜单时,可以使用一些androind平台提供的drawable资源(如图标等);
8 楼 azone.mobi 2010-05-05  
2010-04-17: 关于Activity之间的数据传递
代码1:Activity之间进行跳转
    private OnClickListener openTargetListener = new OnClickListener() {
        public void onClick(View view) {
            Intent intent = new Intent();
            intent.setClass(ThisActivity.this, TargetActivity.class);
           
            startActivity(intent);
        }
       
    };
说明:使用意图(intent)进行activity之间的跳转

代码2:使用Bundle携带在Activity之间进行跳转时的数据
In ThisActivity.java

    //传递数据到下一个TargetActivity:
    private OnClickListener openTargetListener = new OnClickListener() {
        public void onClick(View view) {
            Intent intent = new Intent();
            intent.setClass(ThisActivity.this, TargetActivity.class);
            Bundle bundle = new Bundle();
            bundle.putString(MyConstant.KEY_HEIGHT, fHeight.getText().toString());
            bundle.putString(MyConstant.KEY_WEIGHT, fWeight.getText().toString());
            intent.putExtras(bundle);
           
            startActivity(intent);
        }
       
    };

In TargetActivity.java

    //从上一个Activity中获取数据:
    Bundle bundle = this.getIntent().getExtras();
    double height = Double.parseDouble(bundle.getString(BMIConstant.KEY_HEIGHT));
    double weight = Double.parseDouble(bundle.getString(BMIConstant.KEY_WEIGHT));

说明:使用意图(intent)进行activity之间的跳转,使用Bundle携带数据,在Androind中Bundle是一种特殊的‘map’,
它使用key->value的方式来进行访问。
9 楼 azone.mobi 2010-05-05  
2010-04-26: 在使用模拟器进行调试时如何导入android.jar的源代码?
在当前项目选择的target platform跟目录下创建一个叫‘sources’的目录(SDK_HOME\android-2.1\sources),把android.jar的源代码拷贝到这个目录下,然后重新build项目就可以使用源代码进行调试了。
10 楼 azone.mobi 2010-05-05  
2010-05-5:  android关于menu的分类
在android中,menu分为
1.Options Menu:
    选择菜单,隶属于某一个Activity,用户在点击‘MENU’KEY时弹出;
    它包含两个menu item组:icon menu和expanded menu,但incon menu的数量超过8个时(老的版本是6个),就会以expanded menu的方式展示多余的menu,这种menu叫expanded menu;

2.Context Menu:
    长按菜单,与某个view关联(用户长按住某个view时显示context menu,context menu以列表的方式显示,可以设置其中元素的选择属性)

3.Submenu:
    Submenu是某个Options Menu 或者Context Menu中的item的子menu,Submenu不支持嵌套(不能再嵌套submenu);
  相关解决方案