Activity之间也可以传递对象,传递的对象需要进行序列化。...图 一种可拉伸的图:上左——拉伸,下右——填充。...,点击该按钮,您要买的书就会被重置为空。...,所以打开买书界面应该用startActivityForResult方法,并实现onActivityResult方法,当打开的界面由结果返回时,调用该方法,并在这个方法里将返回的结果显示出来。...,用Intent保存该书名,并利用setResult方法将该Intent返回给上一个界面,这样就达到了返回数据的目的。
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页面(选择页面),并期望返回结果
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 “前面我们已经使用过这个方法,但是两者形参不同
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
在onCreate方法里,R.layout.activity_main指的就是activity_main.xml。 现在layout中有一个TextView,它可以用来显示文字。...TextView tv1 = findViewById(R.id.tv1); 现在我们就拿到了界面上的这个TextView对象。可以对它进行操作了。 比如改变它显示的文字。...接受传入的intent并取出对象。...如果用户返回到onStop()的Activity又显示在前台了,系统会调用 onRestart() -> onStart() -> onResume() 然后重新running 当Activity结束...对象非空,不需要加非空判断,而 onCreate 需要非空判断。
1、空类型安全 1.1、可空类型正确用法 kotlin是强类型判断的,每一个对象都有可以为空和不可以为空之分。...null : mExtras.getString(name); } getStringExtra() 方法的返回值是可能为 null的。...as的推荐写法: //正确写法,转换失败自动转换为空对象 var strAble = text as?...具有 O(1) 的复杂度。 计算时的消耗很少。 同时多次调用有相同的返回值。...那么是什么原因导致的呢? 原因是:Person在被转Java代码时,只会生成一个包含两个参数的构造方法,没有提供默认的构造方法。Gson在通过反射创建对象时,会优先尝试获取无参构造函数。
initLog(tag, isDebug) /** * @param tag 日志标示,可以为空...* @param methodCount 显示方法行数,默认为:2 * @param isHideThreadInfo...是否显示线程信息,默认显示 * @param adapter 自定义log输出 * @param isDebug true...public void initData() { super.initData(); Intent intent = getIntent(); params = intent.getStringExtra...id * 参数2:BaseFragment对象 */ changeFragment(R.id.fragment_layout,
)方法来传入一个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文件: <?
(天行数据)请求下来的数据中,图片链接的数据为空(之前一直是正常数据),导致解析图片时空指针异常,最终程序闪退。...修改方法二:在代码中解析图片的地方加上非空校验,程序不会崩溃,但是新闻列表中不会显示图片。...,原因是我申请的天行数据的API接口调用次数已用完(当时我是有10万次的免费调用次数,不得不感叹你们的强大),具体解决方法是更换TechFragment、MiliFragment、SportFragment...cleanInternalCache(Context context) { deleteFilesByDirectory(context.getCacheDir()); } 退出应用: 用户点击后直接退出程序并返回桌面...代码实现: 专门创建了一个用户维护所有活动(页面)的工具类,当用户点击退出按钮时实际调用exit方法,结束活动类表中每一个活动,并执行System.exit(0);退出。
什么是广播 广播是Android SDK的四大组件中唯一需要别动接收数据的组件。也就是说对于Activity、ContentProvider和Service都可以主动调用,并获取返回数据。...从这种表现形式上看,很像面向对象中的事件(Event),对于事件(onClick、onKeydown)来说,从来不会预知用户什么时候触发他们,只能默默的等待不可预知的事件发生。...注册和取消方法 注册广播接收器的方法是 registerReceiver,注销的方法是unregisterReceiver,定义如下: public Intent registerReceiver(...Manifest清单文件中定义的顺序调用。...广播的优先级只是对同步处理方式起作用,如果在接收器中使用了异步处理方式,则调用的顺序除了和优先级有关,还和Android系统的线程调用有关。
,并调用setSupportActionBar方法设置默认的导航栏为当前的Toolbar。..." 2、代码中获取SearchView对象,新控件还可通过v7类MenuItemCompat的getActionView方法来获取。...2、基于上一点,新控件可取到SearchAutoComplete的对象,因此我们可给该对象注册自动完成的字符串适配器,在用户输入文字时,界面会自动弹出符合搜索条件的关键词列表; 3、setAppSearchData...,但即使工具栏上还有空间,该菜单项也不会显示在工具栏上。...getActionView方法获取SearchView对象时,发现取到的SearchView为空。
的布局, 给设置在父控件的中央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
} 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()函数。
之后每绘制一个Item就会调用一次getView方法,在此方法内就可以引用事先定义好的xml来确定显示的效果并返回一个View对象作为一个Item显示出来。...getItem()可以返回null,难道BaseAdapter内部通过此方法去找对应的元素不会报出空指针异常吗?...事实上没有报,这是因为BaseAdapter方法并没有内部调用此方法,此方法修饰为public就是为了方便程序员进行调用,而BaseAdapter内部早就集成了访问列表元素的方法。...我们从主动调用不同定义的getItem()方法来说明此例,BaseAdapter真的没有调用此方法,否则一定会爆出空指针异常。...当你选择一个ListView所存的元素时,适配器可以提供给我三个有关的特性值: 一个元素对象自身的引用 此元素在ArrayList所存的下标索引position 返回此元素上所附着的long类型值 实际上这三个特性值分别对应我们需要重写
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。...hide(Fragment fragment) 显示一个以前被隐藏过的Fragment。Fragment被hide/show,仅仅是隐藏/显示Fragment的视图,不会有任何生命周期方法的调用。...onActivityCreated() —— 当activity的onCreate()方法被返回之后,调用这个方法。...该方法返回一个 View 对象,该对象表示 Fragment 的根视图;若 Fragment 不需要展示视图,则该方法可以返回 null。...注意:若继承的 Fragment 是 ListFragment,onCreateView() 方法已默认返回了 ListView 对象,故无需再重写该方法。
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) {// 可能涉及重定向导致再次调用此方法
如果您的活动将noHistory设置为true,则永远不会调用此方法。...由于在一个活动中有可能调用startActivityForResult()方法去启动很多不同的活动,每一个活动返回的数据都会回调到onActivityResult()这个方法中,因此我们首先要做的就是通过...URL必须是绝对的,也就是说,它必须始终指定方案。根据其方案解析URL字符串。始终为URL建立流处理程序,实际上,如果没有可用的处理程序的方案,无法为其创建URL实例。...的消息提示框,然后清空界面上已输入的数据,并准备接受下一次的输入; (b) 当点击“全部显示”按钮时,界面跳转到下一个界面(第二个Activity),这该界面中显示前面已多次输入的“姓名、年龄和身高”的数据...,等待重新输入; (d) 当点击“全部删除”按钮时,清空集合中的数据,并使用Toast控件显示“全部数据已经删除!”
intent.putExtra("extra_data", data); (3) 在新的Activity中我们需要获取传过来的值显示在TextView上,并且点击一个Back按钮返回到上一层Activity...因为我们传入的值是String类型的所以用getStringExtra(), 不同类型的值对应着不同的方法。然后把获取的值显示在TextView上。之后点击Button返回。...("extra_data"); 4 5 //将获取的值显示在TextView上 6 TextView dataTextView = (TextView...Intent返回值,具体代码如下所示,返回值也是通过Intent对象的putExtra方法,然后去执行setReault方法即可。...Activity中的TextView上显示ThirdActivity中返回的值,具体效果如下所示。
第二步:检查该位置是否为空(即没有键值对存在) 如果为空,则直接在该位置创建一个新的Entry对象来存储键值对。将要添加的键值对作为该Entry的键和值,并保存在数组的对应位置。...不是,调用 get 方法有几点需要注意的地方: *空指针异常(NullPointerException)**:如果你尝试用 null 作为键调用 get 方法,而 HashMap 没有被初始化(即为 null...// 尝试将state的值改为1,如果修改成功,则成功获取锁,并设置当前线程为持有锁的线程,返回true if (c == 0) { if (compareAndSetState...0,表示已经有其他线程持有锁 // 判断当前线程是否等于持有锁的线程,如果等于,将state的值+1,并设置到state上,获取锁成功,返回true // 如果不是当前线程,获取锁失败,...虚拟机栈保存着方法执行期间的局部变量、操作数栈、方法出口等信息。线程每调用一个 Java 方法时,会创建一个栈帧(Stack Frame),栈帧包含着该方法的局部变量、操作数栈、方法返回地址等信息。
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是没有设置过监听器的,所以点击是没有效果的!说了这么多!有很多重复的话,就是为了给说明白这件事!