【Android】Intent 页面跳转问题以及 会跳刷新 等各种问题汇总

本文深入探讨了Android Activity的基本概念,包括其继承关系、关键方法及其在应用中的作用。详细阐述了如何通过`startActivity(Intent)`和`startActivityForResult(Intent,int)`启动新的Activity,以及如何在子Activity中向父Activity传递结果。通过实例分析,展示了如何在不同场景下灵活运用这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一, 概述:Activity作为公共类,继承自ContextThemeWrapper.

Activity专注于用户所要做的事情。几乎所有的Activity都是和用户进行交互的。因此,Activity通过使用setContentView(view)来展示界面元素。尽管Activities通常是全屏显示窗口的,但是你可以指定下面两种方法的一种来进行显示:

浮动窗体:android:theme="?android:attr/windowIsFloating"嵌入到其他的Activity中。

二,startActivity(Intent)和startActivityForResult(Intent,int)的区别使用:

startActivity(Intent) 用来启动一个新的 activity ,这个 activity 将被放置在 activity 栈的栈顶。这个方法只有一个参数 Intent ,这个参数描述了将被执行的 activity

有时候你希望在一个 activity 结束时得到它返回的结果。举个例子,你可能启动一个 activity 来让用户从通讯簿中选择一个人;当它结束的时候将会返回这个所选择的人。为了得到这个返回的信息,你可以使用 startSubActivity(Intent, int) 这个方法来启动新的 activity ,第二个整形参数将会作为这次调用的识别标记。这个 activity 返回的结果你可以通过 onActivityResult(int, int, String, Bundle) 方法来获得,此方法的第一个参数就是之前调用所使用的识别标记。当 activity 退出的时候,它可以调用 setResult(int) 来将数据返回给他的父进程。这个方法必须提供一个结果码,这个结果码可以使标准结果 RESULT_CANCELED, RESULT_OK ,也可以是其他任何从 RESULT_FIRST_USER 开始的自定义值。此外,它还可以返回一段字符串(经常是一段数据的 URL 地址),一个包含它所有希望值的 Bundle 。这些信息都会在父 activity 的回调函数 Activity.onActivityResult() 中出现,并连同最初提供的识别标记一起(此处有些拗口,意思其实就是子activity 返回的内容、返回码、识别标记都将作为参数,按照不同的返回情况来调用父activity 的Activity.onActivityResult() 方法,以实现出现各种返回时父activity 做出响应的处理)。

三,实例

MainActivity:

Intent intent = new Intent(MainActivity.this, Bookmarks.class); //必须在这个地方定义 不能在上面定义 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivityForResult(intent,0); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //跳转前 A 设定值 返回值 传递的值 super.onActivityResult(requestCode, resultCode, data); if(data != null) { String str=data.getStringExtra("sec_bookmark_url").toString(); mWebView.loadUrl(str) } else Toast.makeText(MainActivity.this,"结果********$$$", Toast.LENGTH_SHORT).show(); }Bookmark.java

String aaa=(String) users.get(arg2).get("bookmark_url"); //获取 Intent intent = new Intent(); // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//刷新 intent.putExtra("sec_bookmark_url", aaa);//加上自定义的参数 setResult(RESULT_OK, intent); Bookmarks.this.finish();


这种方法可行,但是如果Bookmark 只是tabactivity中的一个选项卡,MainActivity跳转到选项卡中,而由选项卡中某一个选项来终结,该如何处理?

思考中……


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值