7.2 Android Basic UI的布局 Intent和Activity
2011-03-25 17:02
435 查看
Download Source Code <<ActivityIntentDemo.zip>>
Activity 和 Intent 演示
使用startActivity()方法在Activity之间切换
使用Intent.putExtra()、Intent.putExtras()方法保存需要传递的数据
使用startActivityForResult()方法在Activity之间传递参数
重载onActivityResult()方法处理回传数据
使用Intent.getExtra()、Intent.getExtras()方法获取传递的数据
新建项目ActivityIntentDemo,编辑res/layout/main.xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button android:text="显示Activity1" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="显示Activity2" android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
添加了两个按钮,当单击按钮的时候切换Activity。
2. 在res/layout添加activity1.xml 和 activity2.xml 布局文件
activity1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:text="Activity1" android:id="@+id/TextView01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<Button android:text="Activity1按钮" android:id="@+id/activity1_btn"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
activity2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="这是button4" />
</LinearLayout>
3. 添加两个类Activity1 和Activity2继承自Activity类,并在onCreate()方法中关联xml布局文件
import android.app.Activity;
import android.os.Bundle;
public class Activity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
}
}
import android.app.Activity;
import android.os.Bundle;
public class Activity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
}
}
4. 编辑ActivityIntentDemo类,如下代码:
public class ActivityIntentDemo extends Activity {
Button button1;
Button button2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (Button)findViewById(R.id.Button01);
button2 = (Button)findViewById(R.id.Button02);
button1.setOnClickListener(button1_click_listener);
button2.setOnClickListener(button2_click_listener);
}
private Button.OnClickListener button1_click_listener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(ActivityIntentDemo.this, Activity1.class);
startActivity(intent);
}
};
private Button.OnClickListener button2_click_listener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(ActivityIntentDemo.this, Activity2.class);
startActivity(intent);
}
};
}
为连个按钮添加单击事件,在单击事件中使用Intent.setClass配置Activity,使用startActivity()方法启动Activity。
5. 在AndroidManifest.xml中配置新的Activity
<activity android:name="Activity1"></activity>
<activity android:name="Activity2"></activity>
6. 运行程序
在Activity之间传递数据
在ActivityIntentDemo类中修改button1的click 事件
private Button.OnClickListener button1_click_listener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(ActivityIntentDemo.this, Activity1.class);
//startActivity(intent);
//数据传递
intent.putExtra("Main", "来自ActivityIntentDemo的数据");
startActivityForResult(intent,REQUEST_CODE);
}
};
使用putExtra()方法放置要传递的数据,使用startActivityForResult()方法来启动新的Activity。并且当新的Activity运行结束的时候,还必须执行原Activity里的回凋函数onActivityResult()。
2. 编辑Activity1类在onCreate()方法中修改如下代码:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
//接收数据
String data=null;
Bundle bundle = getIntent().getExtras();
if(bundle!=null){
data = bundle.getString("Main");
setTitle("接受到的数据:"+data);
}
//button click listener
Button btn = (Button)findViewById(R.id.activity1_btn);
btn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
//单击按钮返回的数据
Bundle bundle = new Bundle();
bundle.putString("store", "数据来自Activity1");
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
finish();
}
});
}
使用getIntent().getExtras()方法返回接收到的数据。最后是单击按钮调用finish()方法返回到主界面。
3. 在ActivityIntnetDemo类中重载onActivityResult()方法,处理返回的结果数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_CANCELED)
setTitle("取消");
else if (resultCode == RESULT_OK) {
String temp=null;
Bundle extras = data.getExtras();
if (extras != null) {
temp = extras.getString("store");
}
setTitle(temp);
}
}
}
4. Activity2只是简单的返回
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
//button click listener
Button btn = (Button)findViewById(R.id.activity2_btn);
btn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
}
Activity1接收到的数据:
当单击按钮后,从Activity1返回的数据。
如果是单击的返回键:
http://www.cnblogs.com/xingquan
Activity 和 Intent 演示
使用startActivity()方法在Activity之间切换
使用Intent.putExtra()、Intent.putExtras()方法保存需要传递的数据
使用startActivityForResult()方法在Activity之间传递参数
重载onActivityResult()方法处理回传数据
使用Intent.getExtra()、Intent.getExtras()方法获取传递的数据
新建项目ActivityIntentDemo,编辑res/layout/main.xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button android:text="显示Activity1" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="显示Activity2" android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
添加了两个按钮,当单击按钮的时候切换Activity。
2. 在res/layout添加activity1.xml 和 activity2.xml 布局文件
activity1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:text="Activity1" android:id="@+id/TextView01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<Button android:text="Activity1按钮" android:id="@+id/activity1_btn"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
activity2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="这是button4" />
</LinearLayout>
3. 添加两个类Activity1 和Activity2继承自Activity类,并在onCreate()方法中关联xml布局文件
import android.app.Activity;
import android.os.Bundle;
public class Activity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
}
}
import android.app.Activity;
import android.os.Bundle;
public class Activity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
}
}
4. 编辑ActivityIntentDemo类,如下代码:
public class ActivityIntentDemo extends Activity {
Button button1;
Button button2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (Button)findViewById(R.id.Button01);
button2 = (Button)findViewById(R.id.Button02);
button1.setOnClickListener(button1_click_listener);
button2.setOnClickListener(button2_click_listener);
}
private Button.OnClickListener button1_click_listener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(ActivityIntentDemo.this, Activity1.class);
startActivity(intent);
}
};
private Button.OnClickListener button2_click_listener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(ActivityIntentDemo.this, Activity2.class);
startActivity(intent);
}
};
}
为连个按钮添加单击事件,在单击事件中使用Intent.setClass配置Activity,使用startActivity()方法启动Activity。
5. 在AndroidManifest.xml中配置新的Activity
<activity android:name="Activity1"></activity>
<activity android:name="Activity2"></activity>
6. 运行程序
在Activity之间传递数据
在ActivityIntentDemo类中修改button1的click 事件
private Button.OnClickListener button1_click_listener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(ActivityIntentDemo.this, Activity1.class);
//startActivity(intent);
//数据传递
intent.putExtra("Main", "来自ActivityIntentDemo的数据");
startActivityForResult(intent,REQUEST_CODE);
}
};
使用putExtra()方法放置要传递的数据,使用startActivityForResult()方法来启动新的Activity。并且当新的Activity运行结束的时候,还必须执行原Activity里的回凋函数onActivityResult()。
2. 编辑Activity1类在onCreate()方法中修改如下代码:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
//接收数据
String data=null;
Bundle bundle = getIntent().getExtras();
if(bundle!=null){
data = bundle.getString("Main");
setTitle("接受到的数据:"+data);
}
//button click listener
Button btn = (Button)findViewById(R.id.activity1_btn);
btn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
//单击按钮返回的数据
Bundle bundle = new Bundle();
bundle.putString("store", "数据来自Activity1");
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
finish();
}
});
}
使用getIntent().getExtras()方法返回接收到的数据。最后是单击按钮调用finish()方法返回到主界面。
3. 在ActivityIntnetDemo类中重载onActivityResult()方法,处理返回的结果数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_CANCELED)
setTitle("取消");
else if (resultCode == RESULT_OK) {
String temp=null;
Bundle extras = data.getExtras();
if (extras != null) {
temp = extras.getString("store");
}
setTitle(temp);
}
}
}
4. Activity2只是简单的返回
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
//button click listener
Button btn = (Button)findViewById(R.id.activity2_btn);
btn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
}
Activity1接收到的数据:
当单击按钮后,从Activity1返回的数据。
如果是单击的返回键:
http://www.cnblogs.com/xingquan
相关文章推荐
- 7.2 Android Basic UI的布局 ListView演示
- Android基础布局+Activity启动+Intent
- Android中Activity的Intent大全
- 【Android】Intent介绍及Intent在Activity中的使用方法
- Android的Activity, Intent 和 Service
- Android UI开发篇之 ViewPager+九宫格布局 实现左右滑动
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
- Android Activity和Intent机制学习笔记
- Android FlexboxLayout 聪明的UI布局
- Android 关闭多个视图Intent.FLAG_ACTIVITY_CLEAR_TOP用法
- Android使用ListView构造复杂界面,响应点击事件,通过Intent跳转activity
- 借助Intent实现Android工程中Activity之间Java对象的传递——实现Serializable接口
- Android使用技巧------Activity中怎么样在子线程和UI线程中来回自如
- Android 在一个Activity中刷新另外一个Activity的UI
- Android UI布局和事件处理小结
- FAQ_16_android service intent activity
- Android总结篇系列:Activity Intent Flags及Task相关属性
- Android-UI布局2
- Android四大组件(Activity详解)----Intent启动Activity
- android源码解析(十八)-->Activity布局绘制流程