《Android第一行代码》first reading 二

活动(activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交互。

在AndroidManifest文件中注册

所有的活动都需要在AndroidManifest.xml中注册。不过Android Studio会自动进行注册


    
        
                 
            
        
    
   
标签中:

android:icon设置APP的图标,安装在手机上的APP图标就是这个。
android:label设置APP的标题,安装在手机上的APP标题就是这个。
通过标签来进行活动注册。

Toast提示

Toast.makeText(FirstActivity.this,"这是按钮",Toast.LENGTH_SHORT).show();
Toast通过静态方法makeText()创建,让后调用show()将其显示出来。
makeText()方法需要3个参数:

  • Context
  • Toast所需文本
  • Toast所需时长 有两个内置常量Toast.LENGTH_SHORT和Toast.LENGTH_LONG

Menu菜单

  1. res中新建一个menu文件夹,在menu中建立新建布局文件。
《Android第一行代码》first reading 二_第1张图片
menu.png

    
    
    

标签就是用来创建具体的某一项菜单项。

  • 在Activity中重写onCreateOptionsMenu()方法【快捷键Ctrl+o】
@Overridepublic boolean onCreateOptionsMenu(Menu menu)
{
//通过getMenulnflater()方法能够得到MenuInflater对象,再调用它的inflate()方法就可以给当前活动创建菜单了。
//inflate方法两个参数,第一个用于指定我们通过哪一个资源文件,第二个用于指定我们的菜单项添加到哪一个menu对象中。
    getMenuInflater().inflate(R.menu.main,menu);
    return true;
}
  • 继续重写onOptionsItemSelected()方法,为菜单添加响应事件
@Overridepublic boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.add_item:
            Toast.makeText(FirstActivity.this,"这是add按钮",Toast.LENGTH_SHORT).show();
            break;
        case R.id.remove_item:
            Toast.makeText(FirstActivity.this,"这是remove按钮",Toast.LENGTH_SHORT).show();
            break;
        case R.id.finish_item:
            Toast.makeText(FirstActivity.this,"这是finish按钮",Toast.LENGTH_SHORT).show();
            finish();//关闭当前活动
            break;
    }
    return true;
}

Intent

Intent是Android程序中各个组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。

1. 显式Intent

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);

2. 隐式Intent

在AndroidManifest.xml中的标签下配置的内容,其中可以指定,,三个标签:


    
        
        
        
    

中的内容同时能够匹配上Intent中指定的action和actegory时,这个活动才能响应该Intent。标签用于更精确地指定当前活动能够响应什么类型的数据。

标签配置
  • android:scheme 用于指定数据的协议部分
  • android:host 用于指定数据的主机名部分
  • android:port 用与指定数据的端口部分
  • android:path 用于指定主机名和端口之后的部分
  • android:mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。

3. Intent数据传递

- 向下一个活动传递数据

通过putExtra()方法传递一个字符串

Intent intent = new Intent();
intent.putExtra("data","Hello SecondActivity");
startActivity(intent);

通过getIntent()方法获取到启动activity的Intent,让后通过getStringExtra取得字符串。

Intent intent = getIntent();
String data = intent.getStringExtra("data");
Log.d("SecondActivity",data);
- 返回数据给上一个活动

可通过startActivityForResult()方法实现。该方法期望活动结束后返回一个j结果给上一个活动。其接受两个参数:Intent和请求码。请求码唯一。

//FirstActivity中
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);
//SecondActivity
button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intentClick = new Intent();
                intentClick.putExtra("data_return","Hello FirstActivity");
//setResult()方法中,第一个参数用于向上一个活动返回处理结果,第二个参数则是带有数据的Intent。
                setResult(RESULT_OK,intentClick);
                finish();
            }
        }
);
//FirstActivity中重写onActivityResult()方法
//该方法带有三个参数:
//requestCode 请求码、resultCode 返回数据时传入的结果集、data 带参的Intent
@Overrideprotected void onActivityResult(int requestCode, int
 resultCode, Intent data) {
    switch (requestCode){
        case 1:
            if (resultCode == RESULT_OK){
                String returnedData = data.getStringExtra("data_return");
                Log.d("FirstActivity",returnedData);
            }
            break;
        default:
    }
}
//还可以在SecondActivity中重写onBackPressed()方法实现点击Back键返回数据
@Overridepublic void onBackPressed() {
    Intent intent = new Intent();
    intent.putExtra("data_return","Hello FirstActivity");
    setResult(RESULT_OK,intent);
    finish();
}

当然上面的内容只是一部分而已,想更深入的了解还得在继续研究。同样我还找到一些其他的资料,比如:
intent Filter
其他人的阅读笔记
Android Developers
这里仅仅是我记录的部分笔记,以备回顾记忆
如有侵权请联系我,我将进行修改和删除

你可能感兴趣的:(《Android第一行代码》first reading 二)