Context的正确使用
一.Context的作用
Context的最大作用就是我们可以通过传递它来获得其他Activity或Application的相关资源和方法,它就相当于它们的引用,我们通过引用来获得对象的封装,这也是我们面向对象的基础,所以,我们主要利用它来加载和访问资源。
class A extends Application{}
现在,我们在这个类中添加一些东西来证明可以通过Context来获得A的相关资源和方法。这次我们使用一个Toast。
首先,是在我们的类A里添加以下的内容:
String s = "hello";
public String getString(String str){
s = str;
return s;
}
然后再在我们的Activity B中尝试取用A的数据和方法:
A a = (A)getApplicationContext();
String s = a.s;
s = a.getString("hello word");
Toast.makeText(this, s, Toast.LENGTH_LONG).show();
然后我们还必须注意在我们的mainfest文件中注册我们的application:
<application android:name=".A"></application>
注意,我们的mainfes开始的at文件中一开pplication是没有名字的,因为我们一般都只是启动一个Activity,而不是一个application,所以,可以将我们这个application的名字注册为继承自Application的子类A,这样才能正常显示出一个Toast出来。如果没有这么做,就可能报出这样的错误:android.app.Application cannot be cast to A
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);
这个Activity1就是我们要显示Toast的Activity,而Acticity2就是我们设置Toast的Activity。
LayoutInflater layout = getLayoutInflater();
View view = layout.inflate(R.layout.toast, null);
记住,必须是在setContentView()之后进行切换,不然就会报错,而且,必须是在你要显示的Activity的setContentView(),如果你放在Activity2中的setContentView()也是会出错,就是空指针,因为我们的layout的元素只有在setContentView()之后才开始分配内存,而且我们只是调用Activity2的方法而已,并没有启动Activity2,这点必须注意。
Context的正确使用的更多相关文章
- 移动端微信小程序开发学习报错记录--toast.js:41 未找到 van-toast 节点,请确认 selector 及 context 是否正确
这个问题仔细检查了一下代码引入,是没有问题的, 根本原因是在页面上忘了加<van-toast id="van-toast" /> 具体引入代码如下: app.json ...
- Context Application 使用总结 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android面试收集录18 Android Context详解
Activity mActivity =new Activity() 作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言 ...
- Context都没弄明白,还怎么做Android开发?
Activity mActivity =new Activity() 作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言 ...
- Context都没弄明白,还怎么做Android开发
转载:https://www.jianshu.com/p/94e0f9ab3f1d Activity mActivity =new Activity() 作为Android开发者,不知道你有没有思考过 ...
- 面向侧面的程序设计AOP-------《三》.Net平台AOP技术概览
本文转载自张逸:晴窗笔记 .Net平台与Java平台相比,由于它至今在服务端仍不具备与unix系统的兼容性,也不具备类似于Java平台下J2EE这样的企业级容器,使得.Net平台在大型的企业级应用上, ...
- Android little error records
1:在清单文件(Manifest)中加入权限时要注意,如下例: <uses-permission android:name="android.permission.CHANGE_NET ...
- Linux – RedHat7 / CentOS 7 忘记root密码修改
1.(a) 开机出现grub boot loader 开机选项菜单时,立即点击键盘任意鍵,boot loader 会暂停. (b) 按下’e’,编辑选项菜单(c) 移动上下鍵至linux16 核心命令 ...
- Android 开发 MaterialDialog框架的详解
前言 开始之前还是需要废话一下,因为有一些坑需要告知.首先MaterialDialog在GitHub上作者已经转型使用100% Kotlin语言编写,虽然可以在Java里调用Kotlin使用.但是个人 ...
随机推荐
- linux diff-比较给定的两个文件的不同
推荐:更多Linux 文件查找和比较 命令关注:linux命令大全 diff命令在最简单的情况下,比较给定的两个文件的不同.如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入.diff命令是 ...
- python之cookbook-day02
第一章:数据结构和算法 1.2 解压可迭代对象赋值给多个变量 问题: 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可迭代对象中解压出 N 个元素 ...
- 2014年武汉的IT行情好像不太好(续):20个月过后,再看当时面试过的几个公司--武汉财富基石-崩盘,辣妈萌宝-创业失败,朋友公司转交他人管理
2014年9月的时候,写过一篇面试的总结性质的文章,"2014年武汉的IT行情好像不太好". 原文地址:blog.csdn.net/fansunion/article/detai ...
- noip模拟赛 abcd
[问题描述]有4个长度为N的数组a,b,c,d.现在需要你选择N个数构成数组e,数组e满足a[i]≤e[i]≤b[i]以及 并且使得 最大.[输入格式]输入文件名为abcd.in.输入文件共 N+1 ...
- Window-CPU-M Benchmark
https://downloads.tomsguide.com/CPU-M-Benchmark,0301-48005.html docker FS, DB, ES 很慢,原来是31.26机器又问题,因 ...
- 遇到很多次,要注意区分service调用,本地用户调用这些区别
WTSQueryUserToken返回1314 The WTSQueryUserToken function obtains the primary access token of the log ...
- Minimum Transport Cost Floyd 输出最短路
These are N cities in Spring country. Between each pair of cities there may be one transportation tr ...
- [bzoj1507][Usaco2009 Hol]Transmission Delay 传输谍延时_动态规划
Transmission Delay 传输谍延时 bzoj-1581 Usaco-2009 Hol 题目大意:题目链接. 注释:略. 想法: 动态规划. 首先我们考虑从后往前dp.(最近好多题都是从后 ...
- Mysql 使用delete drop truncate 删除数据时受外键约束影响解决方案
先禁用数据库的外键约束: set foreign_key_checks=0; 进行删除操作 delete.drop.truncate 恢复数据库外键约束: set foreign_key_checks ...
- 这篇讲angular 的$q的讲得不错
原文: https://segmentfault.com/a/1190000000402555 ---------------------------------------------------- ...