| 站点地图 | 联系我
| www.asm32.net | 2006版 | 资料中心 | linux | asm/asm32 | C/C++ | VC++ | java | 书签 | ASP.Net书签 | 上善若水 厚德载物
 现在位置 :: 主页 >> 资料中心 >> ROOT / CODE / Mobile 编程 / Android 安卓 /
 

Android跳转到另一个Activity三种方法

来源(CSDN博客)

From: https://blog.csdn.net/jiayu0855/article/details/78759471

Android跳转到另一个Activity三种方法

转载 2017年12月09日 15:29:16

记性不好的妹纸萌,只能靠学习记录整理了。

一个Intent对象,用于携带将跳转至下一个界面中使用的数据,使用putExtra(key,values)方法,此处存储的数据类型特别多,常用类型都支持。

方法一、显式启动

Intent内部直接声明要启动的activity所对应的class。

Intent intent=new Intent(MainActivity.this, SecondActivity.class); startActivity(intent);



SecondActivity.start(MainActivity.this, url);

或者在SecondActivity.class里创建static方法

public static void start(Context context, String url) {
	start(context, url,“no”);
}
public static void start(Context context, String url, String isMy) {
	Intent starter = new Intent(context, WebActivity.class);
	starter.putExtra("URL", url);
	starter.putExtra(“ISMY”, isMy);
	context.startActivity(starter);
}


方法二、隐式启动

进行三个匹配,一个是action, 一个是category,一个是data,全部或部分匹配,应用于广播原理BroadcastReceiver。

在AndroidManifest.xml文件里配置Activity的属性

action的名字要和Intent跳转内容一样

例如:

<activity
	android:name="com.example.android.tst.SecondActivity" android:label="@string/title_activity_main" >
	<intent-filter>
		<action android:name="com.example.android.tst.SecondActivity"/>
		<category android:name="android.intent.category.DEFAULT" />
	</intent-filter>
</activity>


在需要用跳转的地方(使用与Adapter等不能直接显示跳转的地方)

Intent intent=new Intent("com.example.android.tst.SecondActivity"); startActivity(intent);


方法三、跳转后,当返回时能返回数据

在MainActivity.java里面

Intent intent = new Intent(MainActivity.this, OtherActivity.class);
intent.putExtra("a", a);
intent.putExtra("b", b);
// startActivity(intent);并不能返回结果
startActivityForResult(intent, REQUESTCODE); //REQUESTCODE--->1
// 获取结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	super.onActivityResult(requestCode, resultCode, data);
	// RESULT_OK,判断另外一个activity已经结束数据输入功能,Standard activity result:
	// operation succeeded. 默认值是-1
	if (resultCode == 2) {
		if (requestCode == REQUESTCODE) {
			int three = data.getIntExtra("c", 0);
			//设置结果显示框的显示数值
			result.setText(String.valueOf(three));
		}
	}
}


在OtherActivity.java里面

此处并不是创建而是直接获取一个intent对象Return the intent that started this activity.

Intent intent = getIntent();
int a = intent.getIntExtra("a", 0); // 没有输入值默认为0
int b = intent.getIntExtra("b", 0); // 没有输入值默认为0
int c=a+b;


处理完获取数据后,在结束本Activity的时候回传数据

Intent intent = new Intent();



intent.putExtra("c", c); //将计算的值回传回去
//通过intent对象返回结果,必须要调用一个setResult方法,
//setResult(resultCode, data);第一个参数表示结果返回码,一般只要大于1就可以
setResult(2, intent);

Link: http://www.asm32.net/article_details.aspx?id=7292


浏览次数 0 发布时间 2018/4/12 2:28:52 从属分类 Android 安卓 【评论】【 】【打印】【关闭
 
| www.asm32.net | 2006版 | 资料中心 | linux | asm/asm32 | C/C++ | VC++ | java | 书签 | ASP.Net书签 | 京ICP备09029108号-1