- 认识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>
运行效果: