Activities(活动)
作为android四大组件之一,掌握理解它是非常关键的。Activity是android的显示界面,类似于swimg的JFrame。我们很容易看出android的程序表面上就是不同Activity的切换,切换到不同Activity是通过Intent来实现,稍后会详细介绍。

一、单个Activity
每个Activity都extends android父类的Activity,并且覆盖onCreat方法,

package me.chendd.activity_01;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
//extends android.app.Activity
public class Activity_01 extends Activity {
                /** Called when the activity is first created. */
    // 重写onCreate
    @Override
                public void onCreate(Bundle savedInstanceState) {
        // 先调用父类onCreate
        super.onCreate(savedInstanceState);
                                // 该Activity引用的布局文件,不同Activty可用不同或相同的布局文件,
        // 但都要在AndroidManifest.xml里注册
                                setContentView(R.layout.main);
                                // 不同视图可通过findViewById来引用
                                TextView MyTextview = (TextView)findViewById(R.id.MyTextView);
                                Button MyButton = (Button)findViewById(R.id.MyButton);
                                MyTextview.setText("my first TextView");
                                MyButton.setText("my first Button"+"\n"+"a");
                }
}

布局文件main.xml需声明包含的视图下;

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
  <!-- eclipse自动生成的视图 -->
        <TextView
                android:id="@+id/MyTextView"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                />
        <!-- 以下三行分别是:设置ID、填满父控件、根据文本扩充 -->
        <Button
                android:id="@+id/MyButton"    
                android:layout_width="fill_parent"    
                android:layout_height="wrap_content"    
                />

</LinearLayout>

运行结果如下:


二、多个Activity交互

Activity之间的切换通过intent来实现的。

package me.chendd.activity_02;

import android.app.Activity;
import android.content.Intent;

import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Activity_02 extends Activity {
        /** Called when the activity is first created. */
        public Button MyButton = null;
        public TextView MyTextView = null;
  @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                MyTextView = (TextView) findViewById(R.id.MyTextView);
    MyTextView.setText(R.string.hello);
                MyButton = (Button)findViewById(R.id.MyButton);
                // 添加监听
                MyButton.setOnClickListener(new MyButtonListener());
        }
  
  // 内部类实现监听器
  class MyButtonListener implements OnClickListener {

    @Override
    public void onClick(View v) {
      // TODO Auto-generated method stub
      Intent intent = new Intent();
      intent.putExtra("put", "123");// 发送消息
      // 两个参数分别表示该类和要显示的类
      intent.setClass(Activity_02.this, OtherActivity.class);
      Activity_02.this.startActivity(intent); // 启动
      // 跳转到发短信的窗口
//      Uri uri = Uri.parse("smsto://13489100884");
//      Intent intent = new Intent(Intent.ACTION_SENDTO,uri);
//      intent.putExtra("sms body", "The SMS text");
//      startActivity(intent);
    }
    
  }
}

另外新建个Activity:

package me.chendd.activity_02;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;

public class OtherActivity extends Activity{
  public TextView MyTextView = null;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.other);
    // 接受intent
    Intent intent = getIntent();
    // 接受信息
    String s = intent.getStringExtra("put");
    MyTextView = (TextView) findViewById(R.id.MyTextView);
    MyTextView.setText(s);
    
    
  }

}


在androidManifest.xml里需添加OtherActivity的信息

<activity
                        android:name=".OtherActivity"
                        android:label="@string/other" >                    
                </activity>

运行结果如下:

按下按钮后: