认识 Android 中的 Activity 组件-------活动

一、开发步骤:

  1. 创建活动
  2. 创建布局
  3. 在活动中注册布局
  4. 在AndroidManifest文件中注册活动

注意:在代码中访问资源文件,我们是通过使用R资源类中定义的资源文件类型和资源文件名称来访问的。具体格式为:R.资源文件类型.资源文件名称。

有两个R文件:我们使用本地的R文件,注意不要导入错误。

  1. import com.example.activetest.R;  //导入本地的R
  2. Android SDK 还会自动提供一个android 包下的R文件。

二、隐藏标题栏应用

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题栏
        setContentView(R.layout.second_layout);
}
requestWindowFeature(Window.FEATURE_NO_TITLE)的意思就是不在活动中显示标题栏,注意这一句代码一定要在setContentView()之前执行,否则将会报错。

三、在活动中使用Toast

Toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。

Toast.makeText(FirstActivity.this, "You click the button1", Toast.LENGTH_SHORT).show();

通过静态方法makeText()创建出一个Toast对象,然后调用show()将Toast显示出来。

makeText()接收三个参数:

  1. 第一个参数Context,也就是Toast要求的上下文。
  2. 第二个参数就是Toast显示的文本内容
  3. 第三个参数就是Toast显示的时长。Toast.LENGTH_SHORT、Toast.LENGTH_LONG

四、在活动中使用Menu:只有按下Menu键才会显示

<?xml version="1.0" encoding="utf-8"?>

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/add_item"
               android:title="add"
               />
        <item
            android:id="@+id/remove_item"
            android:title="remove"
            />
        
    </menu>

在活动中重写 onCreateOptionsMenu()方法。通过getMenuInflater()方法获得MenuInflater对象,在调用inflate()方法就可以创建当前活动的菜单。

public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }
    
    public boolean onOptionsItemSelected(MenuItem item){
        switch(item.getItemId()){
        case R.id.add_item:
            Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
            break;
        case R.id.remove_item:
            Toast.makeText(this, "You clicked remove", Toast.LENGTH_SHORT).show();
            break;
        default:
        }
        return true;
        
        
    }

五、销毁一个活动:调用finish()

六、Intent

Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同的组件之间传递数据。Intent一般可以用于启动活动、启动服务、以及发送广播等场景。

1、使用显示Intent

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

2、使用隐式Intent:指定了一系列更为抽象的action和Category等信息,然后交由系统去分析这个Intent,并帮助我们找出合适的活动去启动。

 <activity android:name="com.test.activitytest.SecondActivity">
            
           <intent-filter >
               <action android:name="com.test.activitytest.ACTION_START" />
               <category android:name="android.intent.category.DEFAULT"/>
               <category android:name="android.intent.category.MY_CATEGORY"/>
           </intent-filter>
        </activity>

每个Intent中只能指定一个action,但可以指定多个category。

3、更多隐式Intent的用法

Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));

Intent的action是Intent.ACTION_VIEW,这是Android系统内置动作,其常量值是android.intent.action.VIEW。通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象,再调用Intent的setData()方法将这个Uri对象传递进去。

4、向下一个活动传递数据。

.putExtra()方法:传递数据

.getStringExtra:获得数据

5、返回数据给上一个活动

七、活动的启动模式

1. standard模式

       它是活动默认的启动模式,在不进行显示制定的情况下,所有活动都会自动使用这种启动模式。每次通过此模式来启动activity时,android总会为目标activity启动一个新的实例。

2. singleTop模式

       它和standard模式有点类似,但是又一点是不同的:此模式下当将要被启动的activity已经位于Task栈顶时,系统不会重新创建目标activity实例,而是复用已有的activity实例。

       如果将要被启动的activity没有位于Task栈顶时,此时系统会重新创建目标activity的实例,并将它加载到Task栈顶上。    

3.  singleTask模式

使用这种加载模式的activity在同一个Task内只有一个实例,当系统采用此singleTask模式启动activity时,可以分为三种情况:

  • 如果将要启动的activity不存在,系统将会创建目标activity实例,并将它加入到Task栈顶。
  • 如果将要启动的activity已经位于Task栈顶,此时与singleTop模式的行为相同。
  • 如果将要启动的activity已经存在,但没有位于Task栈顶,系统将会把位于该activity上面的所有activity移出Task栈,从而使得目标activity转入栈顶。

4.    singleInstance模式

       此加载模式下,无论从哪个Task中启动目标activity,只会创建一个目标activity实例,并会使用一个全新的Task栈来装载该activity实例。当系统采用singleInstance模式启动activity时,可以分为两种情况:

  • 如果将要启动的activity不存在,系统会先创建一个全新的Task、再创建目标activity的实例,并将它加入新的Task的栈顶。
  • 如果将要启动的activity已经存在,无论它位于哪个应用程序中,无论它位于哪个Task中,系统将会把该activity所在的Task转到前台,从而使用该activity显示出来。

tips:需要指出的是,采用singleInstance模式加载activity总是位于Task栈顶,采用singleInstance模式加载activity所在Task只包含该activity。

原文地址:https://www.cnblogs.com/lyjs/p/5259290.html