首页
学习
活动
专区
圈层
工具
发布

Android 开发踩坑记:Activity 间传参总是失败?4 种常用方式 + 完整代码示例,一次学会

4种常用方式+完整代码示例,一次学会刚学Android开发时,最头疼的就是Activity间传参——明明在第一个页面放了参数,第二个页面却拿不到,要么报空指针,要么拿到的是默认值。...读取参数(第二个参数是默认值,当键不存在时返回) String username = intent.getStringExtra("username"); // 字符串 int...()时会拿到默认的Application对象,而非自定义的,导致全局变量为空。...; private TextView tvSelected; private static final int REQUEST_CODE_SELECT = 100; // 请求码,用于识别返回结果...View.OnClickListener() { @Override public void onClick(View v) { // 跳转到B页面(选择页面),并期望返回结果

38810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android】Activity 如何进行数据传输

    intent.getStringExtra("key_data"); TextView textView = findViewById(R.id.text_view);...= null && keyData.length() > 0){ textView.setText(keyData); } 这边呢接收数据,并让string显示在页面上...resultCode:“结果码”,是目标 Activity 返回的状态标记 data:一个 Intent 对象,是目标 Activity 返回的 “数据载体”; 记得判空 getInExtra...同样MainActivity能接收到传回来的数据,并不受影响 三:Activity数据回传的新方式 1:.launch 用于启动目标 Activity 并等待其返回结果的核心方法。...() 作用:回调接口,当被启动的 Activity 关闭并返回结果时触发 重写onActivityResult方法,((20250808114147-zw40xjr “前面我们已经使用过这个方法,但是两者形参不同

    17710

    Activity数据传递

    Bundle getExtras():取出Intent中所携带的数据包。 使用Intent传递数据只需调用putExtra()方法将想要存储的数据存在Intent中即可。...其实用Intent传递数据以及对象时,它的内部也是调用了Bundle对象相应的put()方法,也就是说Intent内部也是用Bundle来实现数据传递的,只是封装了一层而已。...Intent对象,然后通过该对象的getStringExtra()方法获取输人的用户名,并将得到的用户名绑定在TextView控件中进行显示。...需要注意的是,getStringExtra(String str)方法传人的参数必须是MainActivity中intent.putExtra()方法中传人的key,否则会返回null。...,android:label属性是用来指定显示在标题栏上的名称的,如桌Activity设置了该属性,则跳到该Activity页面时标题栏会显示在Activity中配置的名称,否则显示在Application

    1.4K80

    Android系列之Activity的传值和回传值

    )方法来传入一个Intent对象,这个Intent对象我们可以精确的指定我们需要跳转的Activity上,或者通过Intent对象来 指定我们要完成的一个action操作。...例如,我们希望完成下面一个功能,在MainActivity上,写上一个算术表达式,然后跳转到到第二个SecondActivity上,在这个 Activity上将第一个Activity的表达式显示出来,然后我们可以输入我们的算术表达式结果...setResult方法表示我将Intent对象返回给之前的那个Activity,这样就可以在onActivityResult方法中得到Intent对象, */ setResult(1001, intent...MainActivity,通过 setResult 方法可以将我们的值保存在Intent对象中,并返回给MainActivity对象,通过的 onActivityResult 方法来处理得到的回传Intent...finish()方法我们可以显示的结束这个Activity对象的生命。 最后我们来看一下AndroidManifest.xml文件: <?

    2.6K30

    Android小项目——新闻APP

    (天行数据)请求下来的数据中,图片链接的数据为空(之前一直是正常数据),导致解析图片时空指针异常,最终程序闪退。...修改方法二:在代码中解析图片的地方加上非空校验,程序不会崩溃,但是新闻列表中不会显示图片。...,原因是我申请的天行数据的API接口调用次数已用完(当时我是有10万次的免费调用次数,不得不感叹你们的强大),具体解决方法是更换TechFragment、MiliFragment、SportFragment...cleanInternalCache(Context context) { deleteFilesByDirectory(context.getCacheDir()); } 退出应用: 用户点击后直接退出程序并返回桌面...代码实现: 专门创建了一个用户维护所有活动(页面)的工具类,当用户点击退出按钮时实际调用exit方法,结束活动类表中每一个活动,并执行System.exit(0);退出。

    1.6K10

    全局事件-广播(Broadcast)

    什么是广播 广播是Android SDK的四大组件中唯一需要别动接收数据的组件。也就是说对于Activity、ContentProvider和Service都可以主动调用,并获取返回数据。...从这种表现形式上看,很像面向对象中的事件(Event),对于事件(onClick、onKeydown)来说,从来不会预知用户什么时候触发他们,只能默默的等待不可预知的事件发生。...注册和取消方法 注册广播接收器的方法是 registerReceiver,注销的方法是unregisterReceiver,定义如下: public Intent registerReceiver(...Manifest清单文件中定义的顺序调用。...广播的优先级只是对同步处理方式起作用,如果在接收器中使用了异步处理方式,则调用的顺序除了和优先级有关,还和Android系统的线程调用有关。

    1.6K60

    在不同的activity之间传递数据

    的布局, 给设置在父控件的中央center_inParent 第一个界面里面: 获取到EditText对象的值 获取Intent对象,调用new出来,...通过简便方式直接指定,参数:上下文,类字节码 调用Intent对象的putExtra(key,val)方法,传递数据,参数:键值对 调用startActivity(intent)方法,开启 第二个界面里面...: 获取Intent对象,调用getIntent()方法,获取到传递过来的Intent对象 调用Intent对象的getStringExtra(name)方法,获取传递的String,参数:键 获取Random...对象,new出来随机数对象 调用Random对象的nextInt(n),获取随机值,参数:int类型的最大值,0开始要减一 显示进度条,布局文件增加,设置最大值android...:max=”100”,代码中获取到这个ProgressBar对象,调用对象的setProgress(p)方法,参数:上面的随机值 也可以传递对象,但是这个对象必须序列化 第一个activity: package

    3.7K30

    JavaScript中关于null的一切

    } greetObject(); // => null 但是,在不带参数的情况下调用函数greetObject() 时,该函数返回null。 返回null是合理的,因为who参数没有值。...如果变量包含非空值(例如对象),则表达式existObject === null的计算结果为false。 2.1 null 是虚值 null与false、0、''、undefined、NaN都是虚值。...再次使用greetObject() 函数,并尝试从返回的对象访问message属性: let who = ''; greetObject(who).message; // throws "TypeError...4. null 的替代方法 当无法构造对象时,我们通常的做法是返回null,但是这种做法有缺点。在执行堆栈中出现null时,刚必须进行检查。...尝试避免返回 null 的做法: 返回默认对象而不是null 抛出错误而不是返回null 回到开始返回greeting对象的greetObject()函数。

    1.7K10

    Andorid-ListView简单使用以及BaseAdapter入门

    之后每绘制一个Item就会调用一次getView方法,在此方法内就可以引用事先定义好的xml来确定显示的效果并返回一个View对象作为一个Item显示出来。...getItem()可以返回null,难道BaseAdapter内部通过此方法去找对应的元素不会报出空指针异常吗?...事实上没有报,这是因为BaseAdapter方法并没有内部调用此方法,此方法修饰为public就是为了方便程序员进行调用,而BaseAdapter内部早就集成了访问列表元素的方法。...我们从主动调用不同定义的getItem()方法来说明此例,BaseAdapter真的没有调用此方法,否则一定会爆出空指针异常。...当你选择一个ListView所存的元素时,适配器可以提供给我三个有关的特性值: 一个元素对象自身的引用 此元素在ArrayList所存的下标索引position 返回此元素上所附着的long类型值 实际上这三个特性值分别对应我们需要重写

    1.8K20

    android学习笔记----WebView的url跳转时方法执行顺序体会

    Override public void onPageStarted(WebView view, String url, Bitmap favicon) {// 可能涉及重定向导致再次调用此方法...shouldOverrideUrlLoading在onPageStarted前面的情况) 所以在这里,得出的结论是 当访问的目标地址需要重定向的时候: 方法的执行顺序:onPageStarted()-...当访问的目标地址不需要重定向的时候: 方法的执行顺序:onPageStarted()-->onPageFinished() 这又有了一个问题,当我点击第二个按钮访问google的时候,出现了问题!...等了一会才出现下图: 于是乎,我加了一个让人很匪夷所思的空方法!!! super.onPageStarted(view, url, favicon);//点进去看这个方法是空的。...public void onPageStarted(WebView view, String url, Bitmap favicon) {// 可能涉及重定向导致再次调用此方法

    1.3K10

    android学习笔记----隐式意图和显式意图

    如果您的活动将noHistory设置为true,则永远不会调用此方法。...由于在一个活动中有可能调用startActivityForResult()方法去启动很多不同的活动,每一个活动返回的数据都会回调到onActivityResult()这个方法中,因此我们首先要做的就是通过...URL必须是绝对的,也就是说,它必须始终指定方案。根据其方案解析URL字符串。始终为URL建立流处理程序,实际上,如果没有可用的处理程序的方案,无法为其创建URL实例。...的消息提示框,然后清空界面上已输入的数据,并准备接受下一次的输入; (b) 当点击“全部显示”按钮时,界面跳转到下一个界面(第二个Activity),这该界面中显示前面已多次输入的“姓名、年龄和身高”的数据...,等待重新输入; (d) 当点击“全部删除”按钮时,清空集合中的数据,并使用Toast控件显示“全部数据已经删除!”

    2.5K10

    哦耶!冲进小米了!

    第二步:检查该位置是否为空(即没有键值对存在) 如果为空,则直接在该位置创建一个新的Entry对象来存储键值对。将要添加的键值对作为该Entry的键和值,并保存在数组的对应位置。...不是,调用 get 方法有几点需要注意的地方: *空指针异常(NullPointerException)**:如果你尝试用 null 作为键调用 get 方法,而 HashMap 没有被初始化(即为 null...// 尝试将state的值改为1,如果修改成功,则成功获取锁,并设置当前线程为持有锁的线程,返回true if (c == 0) { if (compareAndSetState...0,表示已经有其他线程持有锁 // 判断当前线程是否等于持有锁的线程,如果等于,将state的值+1,并设置到state上,获取锁成功,返回true // 如果不是当前线程,获取锁失败,...虚拟机栈保存着方法执行期间的局部变量、操作数栈、方法出口等信息。线程每调用一个 Java 方法时,会创建一个栈帧(Stack Frame),栈帧包含着该方法的局部变量、操作数栈、方法返回地址等信息。

    77410

    Android完美解析setContentView 你真的理解setContentView吗?「建议收藏」

    public Window getWindow() { return mWindow; } 返回了一个Window对象,这个mWindow就是Window的子类PhoneWindow...接下来通过反射加载到我们传入的布局,接着下面会通过调用getCallBack得到一个CallBack对象cb,其实这个cb就是我们的Activity,接着会调用Activity的onContentChanged...方法,这个方法是一个空实现,在后面的例子中我们会用到这个方法!...,所以我们点击了重填后,我们确实是给tv_name和tv_phone赋值了,但是我们显示的View不是原来那个View了,是新的View,那么新的View里面的tv_name和tv_phone是空的!...所以显示为空!点击提交按钮也是一个道理!我们给原来的bt_ok设置了监听器,而新的View的bt_ok是没有设置过监听器的,所以点击是没有效果的!说了这么多!有很多重复的话,就是为了给说明白这件事!

    1.9K30
    领券