基础篇1.4 Activity和Intent

来源:互联网 发布:linux下安装nginx 编辑:程序博客网 时间:2024/05/18 20:11

基础篇1.4 Activity和Intent

一、Activity组件和Intent

1、  Activity是用于与用户进行交互的一个组件。一般一个Android应用程序会由一个或者多个Activity组成。当然,会有一个main activity用于第一次启动应用程序的时候调用。

2、  Intent则相当于一个媒介的作用,用于Activity之间的调用和它们之间数据的传递。


二、应用举例:

例如开发一个简单的两个数之和的小应用。


1、  分析

需要创建两个Activity,第一个Activity用于用户操作界面,包含一个文本框、两个输入框和一个按钮;第二个Activity用于显示结果。       

2、  开发过程

1)        在layout文件夹下修改main.xml文件,其对应MainActivity的布局,一般情况下,每一个activity对应一个布局的xml文件。

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

tools:context=".MainActivity">

//第一个数

    <EditText

       android:id="@+id/myEditText01"

       android:layout_height="wrap_content"

       android:layout_width="fill_parent"

       />

//显示符号“+”

    <TextView

       android:id="@+id/myTextView"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="@string/add"/>

//第二个数

<EditText

    android:id="@+id/myEditText02"

    android:layout_height="wrap_content"

    android:layout_width="fill_parent"

    />

//按钮

    <Button

       android:id="@+id/myButton"

       android:layout_height="wrap_content"

       android:layout_width="fill_parent"

       android:text="@string/result"

       />

</LinearLayout>

2)        在MainActivity中显示出控件。

publicclass MainActivity extends Activity {

private EditText myEditText01, myEditText02;

private TextView myTextView;

private Button myButton;

    @Override

    protected void onCreate(BundlesavedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        myEditText01 =(EditText) findViewById(R.id.myEditText01);

        myEditText02 =(EditText) findViewById(R.id.myEditText02);

        myTextView =(TextView) findViewById(R.id.myTextView);

        myButton =(Button) findViewById(R.id.myButton);

                    //按钮的监听事件

        myButton.setOnClickListener(newMyButtonListener());

    }

    //定义内部类监听

    class MyButtonListener implementsOnClickListener {

           @Override

           public void onClick(View v) {

//获取两个控件的值,并将值存放到Intent中,用于传递给ResultActivity。

                    String add01 =myEditText01.getText().toString();

                    String add02 =myEditText02.getText().toString();

                    Intent intent = newIntent();

                    intent.putExtra("add01",add01);

                    intent.putExtra("add02",add02);

                    intent.setClass(MainActivity.this,ResultActivity.class);

                    MainActivity.this.startActivity(intent);

           }

    }

}

3)        定义显示结果的layout,result.xml

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

<TextView

    android:id="@+id/result"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    />

</LinearLayout>

4)        ResultActivity中输出结果

publicclass ResultActivity extends Activity {

private TextView rs;

@Override

protected void onCreate(BundlesavedInstanceState) {

           super.onCreate(savedInstanceState);

           setContentView(R.layout.result);

           Intent intent = getIntent();

           String add01 =intent.getStringExtra("add01");

           String add02 =intent.getStringExtra("add02");

           Double result =Double.parseDouble(add01) + Double.parseDouble(add02);

           rs =(TextView)findViewById(R.id.result);

           rs.setText(result.toString());

}

}

5)        最后需要注意的是,在AndroidManifest.xml中加入ResultActivity。

<?xmlversion="1.0"encoding="utf-8"?>

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

    package="com.solidwang.activity_02"

    android:versionCode="1"

    android:versionName="1.0">

    <uses-sdk

       android:minSdkVersion="9"

       android:targetSdkVersion="17"/>

    <application

       android:allowBackup="true"

       android:icon="@drawable/ic_launcher"

       android:label="@string/app_name"

       android:theme="@style/AppTheme">

        <activity

           android:name="com.solidwang.activity_02.MainActivity"

           android:label="@string/app_name">

            <intent-filter>

                <actionandroid:name="android.intent.action.MAIN"/>

                <categoryandroid:name="android.intent.category.LAUNCHER"/>

            </intent-filter>

        </activity>

        <activity

           android:name="com.solidwang.activity_02.ResultActivity">

        </activity>

    </application>

 

</manifest>

6)        启动程序