- 认识Activity
Activity是应用程序的一个组件
详解Android的Activity组件 - 创建Activity
- 一个Activity就是一个类,并且这个类要继承Activity
- 需要覆写onCreate方法
- 第一个Activity都需要在AndroidManifest.xml文件中进行配置
- 为Activity添加必要控件
- 向Activity添加一个组件
res/layout/main.xml 布局文件 - 在一个Activity当中启动另外一个Activity的方法
参照第二个例子:Activity002 - 使用Intent在Activity之间传递数据的基本方法
参照第二个例子:Activity002 - 为控件添加监听器
注:使用内部类的好处:可以调用外部类的成员变量和成员方法
例中所贴代码为以下几部分代码:
java代码
res/layout/activity_xxx.xml
res/values/strings.xml
AndroidManifest.xml
-----------------------------------------------------------------------------------
第一个例子:Activity001
MainActivity.java
package com.example.activity001; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView myTextView = (TextView)findViewById(R.id.myTextView); Button myButton = (Button) findViewById(R.id.myButton); myTextView.setText("我的第一个TextView"); myButton.setText("我的第一个Button"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
res/laout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/myTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <Button android:id="@+id/myButton" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Activity001</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> </resources>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.activity001" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="9" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.activity001.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
运行效果:
-------------------------------------------------------------------------------------------------------------
第二个例子:Activity002
MainActivity.java
package com.example.activity002; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { // 用于跳转到另一个Activity private Button myButton = null; // 用于发短信 private Button sendButton = null; private TextView myTextView = null; private static int count = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myTextView = (TextView) findViewById(R.id.myTextView); myTextView.setText("这是第一个Activity\tcount: " + (count++)); myButton = (Button) findViewById(R.id.myButton); myButton.setText("跳转到第二个Activity"); myButton.setOnClickListener(new MyButtonListener()); sendButton = (Button) findViewById(R.id.sendButton); sendButton.setText("跳转到发送短信Activity"); sendButton.setOnClickListener(new SendButtonListener()); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } class MyButtonListener implements OnClickListener { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this, SecondActivity.class); // 两个Activity之间传递参数 intent.putExtra("activity_param_001", "参数值来自Activity"); MainActivity.this.startActivity(intent); } } class SendButtonListener implements OnClickListener { @Override public void onClick(View v) { // 实现了一次转变到发送短信的界面。 // Uri uri = Uri.parse("smsto://730371432"); Uri uri = Uri.parse("smsto:18352507379"); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); // 这个程序是存放的是键值对 intent.putExtra("sms_body", "the SMS text"); // 这个程序也可以写作:startActivity(intent);表示的启动 MainActivity.this.startActivity(intent); } } }
SecondActivity.java
package com.example.activity002; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class SecondActivity extends Activity { // 返回到第一个Activity private Button myButton = null; private TextView myTextView = null; private TextView showTextView = null; private static int count = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); myTextView = (TextView) findViewById(R.id.my2TextView); myTextView.setText("这是第二个Activity\tcount: " + (count++)); myButton = (Button) findViewById(R.id.my2Button); myButton.setText("跳转到第一个Activity"); myButton.setOnClickListener(new My2ButtonListener()); Intent intent = getIntent(); String paramValue = intent.getStringExtra("activity_param_001"); showTextView = (TextView) findViewById(R.id.showTextView); showTextView.setText(paramValue); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } class My2ButtonListener implements OnClickListener { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(SecondActivity.this, MainActivity.class); SecondActivity.this.startActivity(intent); } } }
布局文件
res/layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/myTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/activity_001" /> <Button android:id="@+id/myButton" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/sendButton" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
res/layout/activity_second.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".SecondActivity" > <TextView android:id="@+id/my2TextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/activity_002" /> <Button android:id="@+id/my2Button" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/showTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Activity002</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="activity_001">第一个Activity</string> <string name="activity_002">第二个Activity</string> </resources>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.activity002" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="9" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity" android:label="@string/app_name" > </activity> </application> </manifest>
运行效果: