1、使用Intent对象来指定一个Activity,并通过startActivity或startActivityForResult方法启动该Activity.以及在Activity之间传递数据:
public class MainActivity extends Activity {
private Button btn1,btn2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout view = new LinearLayout(this);
view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
btn1 = new Button(this);
btn1.setId(1);
btn1.setText("使用类名开启另一个Activity");
btn1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
btn2 = new Button(this);
btn2.setId(2);
btn2.setText("使用action开启另一个Activity");
btn2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
view.addView(btn1);
view.addView(btn2);
setContentView(view);
btn1.setOnClickListener(listener);
btn2.setOnClickListener(listener);
}
private View.OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
switch (view.getId()) {
case 1:
intent.setClass(MainActivity.this, ResultActivity.class);
intent.putExtra("name", "JAVA");
startActivityForResult(intent, 222);
break;
case 2:
intent.setAction("forResult");
MyData myData = new MyData();
//使用putExtra传递自定义对象时,该对象必须实现序列化,该类中所有成员属性也必须实现序列化接口
intent.putExtra("data", myData);
startActivity(intent);
break;
default:
break;
}
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//requestCode是请求码,即startActivityForResult(intent, 222)中的第二个参数
//resultCode是结果码,即setResult(333)中设置的数字
switch (requestCode) {
case 222:
if(resultCode == 333){
Toast.makeText(this, "无结果返回...", Toast.LENGTH_LONG).show();
} else if(resultCode == 444){
Toast.makeText(this, data.getStringExtra("result"), Toast.LENGTH_LONG).show();
}
break;
default:
break;
}
}
}
public class ResultActivity extends Activity {
private Button btn1 , btn2;
private TextView tv;
private Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
intent = getIntent();
LinearLayout view = new LinearLayout(this);
view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
tv = new TextView(this);
tv.setText("name is "+intent.getStringExtra("name"));
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
btn1 = new Button(this);
btn1.setId(1);
btn1.setText("Back1");
btn1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
btn2 = new Button(this);
btn2.setId(2);
btn2.setText("Back2");
btn2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
view.addView(tv);
view.addView(btn1);
view.addView(btn2);
btn1.setOnClickListener(listener);
btn2.setOnClickListener(listener);
setContentView(view);
}
private View.OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case 1:
setResult(333);
break;
case 2:
intent.putExtra("result", "带结果返回");
setResult(444, intent);
break;
default:
break;
}
ResultActivity.this.finish();
}
};
}
public class Result2Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MyData data = (MyData)getIntent().getSerializableExtra("data");
setTitle(data.value);
}
}
public class MyData implements Serializable {
public String value = "this is test";
}
2、Intent指定Activity的方式
2.1 直接使用Class
intent.setClass(MainActivity.this, ResultActivity.class);
<activity Android:name=".ResultActivity"></activity>
2.2 使用Action
intent.setAction("forResult");
<activity android:name=".Result2Activity">
<intent-filter>
<action android:name="forResult"></action>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
2.3 使用包名
ComponentName cn = new ComponentName(MainActivity.this, "com.zj.activity.another.ActivityA");
intent.setComponent(cn);
<activity android:name=".another.ActivityA"></activity>
分享到:
相关推荐
在Android应用开发中,Intent是一种强大的机制,用于在组件之间进行通信。Intent不仅可以用来启动新的Activity,还可以启动服务、广播接收器等。本教程将详细讲解如何使用Intent来实现特定的功能,包括打开新的...
但在大多数情况下,系统的Activity管理机制足以处理Activity的生命周期,无需手动调用`finish()`。 ```java // 关闭当前Activity finish(); ``` 此外,如果需要关闭之前启动的独立Activity,可以使用`finish...
在Android应用开发中,Intent是一种强大的机制,用于在组件之间建立通信桥梁,特别是在Activity之间进行切换和数据传递。本文将详细讲解如何通过Intent实现Activity之间的切换,并探讨如何利用Intent进行数据传递。 ...
Activity是用户界面的主要载体,Intent则是一种消息传递机制,用于在不同的组件之间建立联系。 Activity是Android应用程序的基本构建块,它代表了用户可以看到并与其交互的屏幕。每个Activity都有自己的生命周期,...
在Android开发中,Intent是应用程序之间以及应用程序内部组件之间通信的主要机制。Intent不仅可以用来启动新的Activity,还可以在组件间传递数据。在这个场景中,我们关注的是如何在Activity之间通过Intent传递一个...
在Android应用开发中,Activity和Intent是两个至关重要的概念,它们构成了Android应用程序的基本交互机制。这篇笔记我们将深入探讨这两个核心组件及其之间的关系。 首先,Activity是Android中的一个基础组件,可以...
总结来说,实验10涵盖了Android应用开发中的Intent通信机制、系统服务调用(拨打电话和发送短信)、权限管理以及用户界面交互等多个核心知识点。通过这个实验,开发者可以深入理解Android应用的运行机制,并提升实际...
在Android应用开发中,Intent是一种强大的机制,用于在应用程序组件之间进行通信,是连接不同组件的桥梁。"ex07_activity_intent"这个压缩包文件很可能包含了一系列关于Android中Intent使用的教程或示例代码,让我们...
Intent则是一种消息传递机制,它用于启动Activity或者服务,传递数据以及在组件间进行通信。 首先,我们来详细了解一下Activity。Activity是Android系统中用户界面的基本单元,每个Activity都有自己的生命周期,...
在Android应用开发中,Fragment和Activity是两个核心组件,它们共同构建了...在给定的实例中,可能包含了对上述某些方法的实际应用,通过分析代码和调试,开发者可以更深入地理解Fragment与Activity之间的通信机制。
通过这个实验,开发者不仅可以掌握Intent的基本用法,还能了解Android组件通信的核心机制。熟练运用Intent在Activity间传递数据,将极大地提升应用程序的交互性和用户体验。同时,理解Intent的显式与隐式使用方式,...
请求码与结果码是Android中用于处理多Activity间通信的重要机制。当你在一个Activity中通过startActivityForResult(Intent intent, int requestCode)启动另一个Activity时,可以在第二个Activity中通过setResult(int...
Activity作为Android四大组件之一,是用户与应用界面交互的主要入口,而Intent则扮演着不同组件间通信的重要角色。 Activity简介: Activity是Android应用程序中的一个窗口,用于展示用户界面并与用户进行交互。它...
`Intent Filter` 是 `Activity` 或 `BroadcastReceiver` 在清单文件(AndroidManifest.xml)中定义的一种机制,用于声明它们愿意处理的 `Intent` 类型。 1. **定义Intent Filter** 在 `AndroidManifest.xml` 文件...
总结来说,Intent是Android开发中的核心组成部分,它使得组件之间的通信变得简单而灵活。通过Intent在Activity间切换,我们可以实现应用的导航逻辑,同时通过传递数据和处理返回结果,实现更复杂的功能。掌握Intent...
总结,Intent是Android系统中的核心机制之一,它允许组件间进行通信并执行特定任务。显示Intent用于明确指定目标,而隐式Intent则依赖于Intent Filter来寻找合适的组件。了解和熟练使用Intent对于开发高质量的...
本文将详细讨论如何启动Service以及Activity与Service之间的通信机制。 首先,我们来看启动Service的两种主要方式: 1. **显式启动(Explicit Start)**: 显式启动Service时,我们需要明确指定Service的类名。...