1. <pre class="java" name="code">

  1. //兼容安卓的系统package cn.com.likeshow;
  2.  
  3. import java.lang.reflect.Constructor;
  4. import java.lang.reflect.InvocationTargetException;
  5.  
  6. import myvm.test.myActivity;
  7. /*
  8. * author 张章
  9. *
  10. * time 2014-5-12
  11. *
  12. */
  13. public class Activity {
  14.  
  15. private Bundle bundle;
  16.  
  17. //savedInstanceState用于activity见传递參数
  18. protected void onCreate(Bundle savedInstanceState) {
  19.  
  20. this.bundle=savedInstanceState;
  21. }
  22.  
  23. protected Intent getIntent()
  24. {
  25.  
  26. return bundle.getIntent();
  27.  
  28. }
  29.  
  30. protected static Context getApplicationContext()
  31. {
  32. return null;
  33.  
  34. }
  35. protected void startActivity(Intent intent) {
  36. //通过反射完成对象创建
  37. Activity activity=intent.getPreActivity();
  38. Class class1=intent.getAfterActivity();
  39.  
  40. Constructor con=class1.getConstructors()[0];
  41. try {
  42. Activity activity2=(Activity) con.newInstance();
  43. //把Bundele最为參数传入,调用getIntent()时会从bundle中获取activity间传递的參数
  44. activity2.onCreate(new Bundle(intent));
  45.  
  46. } catch (Exception e) {
  47.  
  48. e.printStackTrace();
  49. }
  50.  
  51. }
  52.  
  53. protected void setContentView(int id) {
  54. System.out.println("setContentView " + id);
  55. }
  56.  
  57. protected boolean onCreateOptionsMenu(Menu menu) {
  58.  
  59. return true;
  60. }
  61.  
  62. protected boolean onOptionsItemSelected(MenuItem item) {
  63. return true;
  64. }
  65.  
  66. protected static class Toast
  67. {
  68.  
  69. private Context applicationContext;
  70. private static String s;
  71. private int t;
  72.  
  73. private Toast(Context applicationContext2, String string, int i) {
  74. this.applicationContext=applicationContext2;
  75. this.s=string;
  76. this.t=i;
  77. }
  78. public static Toast makeText(Context applicationContext,String string, int i)
  79. {
  80. //实际安卓中不一定是返回Toast对象,该事例仅仅用于模拟安卓实现原理
  81. return new Toast(applicationContext,string,i);
  82. }
  83. public static void show()
  84. {
  85. int len=s.length()+2;
  86. for(int i=0;i<len;i++)
  87. System.out.print("*");
  88. System.out.print("\n*" +s+"*\n");
  89. for(int i=0;i<len;i++)
  90. System.out.print("*");
  91. System.out.println();
  92. }
  93. }
  94.  
  95. public static void main(String[] args) {
  96. //方便起见,假定默认启动myActivity,当然能够通过读取配置文件,知道默认启动的Activity
  97. new myActivity().onCreate(new Bundle(null));
  98. }
  99.  
  100. }
  101.  
  102. package cn.com.likeshow;
  103.  
  104. public class Bundle {
  105.  
  106. private Intent intent;
  107. public Bundle (Intent intent)
  108. {
  109. this.intent=intent;
  110. }
  111. public Intent getIntent() {
  112. return intent;
  113. }
  114. public void setIntent(Intent intent) {
  115. this.intent = intent;
  116. }
  117. }
  118.  
  119. package cn.com.likeshow;
  120.  
  121. import java.io.ObjectInputStream.GetField;
  122. import java.util.HashMap;
  123. import java.util.Map;
  124.  
  125. public class Intent {
  126.  
  127. private Map<String ,Object>map;
  128. private Activity activity;
  129. private Class class1;
  130. public Intent(Activity activity, Class<? extends Activity> class1)
  131. {
  132. map=new HashMap<String, Object>();
  133. this.activity=activity;
  134. this.class1=class1;
  135. }
  136. public void putExtra(String str,Object obj){
  137. map.put(str, obj);
  138. }
  139. public Object getExtra(String str){
  140. return map.get(str);
  141. }
  142.  
  143. public Activity getPreActivity()
  144. {
  145. return activity;
  146.  
  147. }
  148. public Class getAfterActivity()
  149. {
  150. return class1;
  151.  
  152. }
  153.  
  154. }
  155.  
  156. //==========简易演示样例安卓代码例如以下=========================================================
  157. package myvm.test;
  158.  
  159. import cn.com.likeshow.Activity;
  160. import cn.com.likeshow.Bundle;
  161. import cn.com.likeshow.Intent;
  162.  
  163. public class myActivity extends Activity {
  164.  
  165. @Override
  166. public void onCreate(Bundle savedInstanceState) {
  167. super.onCreate(savedInstanceState);
  168. System.out.println("myActivity 启动");
  169. setContentView(1);
  170. Toast.makeText(getApplicationContext(),"哈哈Toast",0).show();
  171.  
  172. Intent intent=new Intent(myActivity.this, SecondActivity.class);
  173. intent.putExtra("myActivity", "hello 2activity");
  174.  
  175. startActivity(intent);
  176.  
  177. Toast.makeText(getApplicationContext(),"SecondActivity启动完成",0).show();
  178.  
  179. Intent intent2=new Intent(myActivity.this, ThirdActivity.class);
  180. intent2.putExtra("1", "hello 3activity");
  181.  
  182. startActivity(intent2);
  183. Toast.makeText(getApplicationContext(),"ThirdActivity启动完成",0).show();
  184. }
  185. }
  186.  
  187. package myvm.test;
  188.  
  189. import cn.com.likeshow.Activity;
  190. import cn.com.likeshow.Bundle;
  191. import cn.com.likeshow.Intent;
  192.  
  193. public class SecondActivity extends Activity{
  194. @Override
  195. protected void onCreate(Bundle savedInstanceState) {
  196. super.onCreate(savedInstanceState);
  197. System.out.println("SecondActivity 启动");
  198. setContentView(2);
  199.  
  200. Intent intent=getIntent();
  201. Object object=intent.getExtra("myActivity");
  202. Object object2=intent.getExtra("1");
  203.  
  204. System.out.println("SecondActivity "+object);
  205. System.out.println("SecondActivity "+object2);
  206. Toast.makeText(getApplicationContext(),"SecondActivity运行完成",0).show();
  207. }
  208. }
  209.  
  210. package myvm.test;
  211.  
  212. import cn.com.likeshow.Activity;
  213. import cn.com.likeshow.Bundle;
  214. import cn.com.likeshow.Intent;
  215.  
  216. public class ThirdActivity extends Activity {
  217. @Override
  218. protected void onCreate(Bundle savedInstanceState) {
  219. super.onCreate(savedInstanceState);
  220. System.out.println("ThirdActivity 启动");
  221. setContentView(3);
  222.  
  223. Intent intent=getIntent();
  224. Object object=intent.getExtra("myActivity");
  225. Object object2=intent.getExtra("1");
  226.  
  227. System.out.println("ThirdActivity "+object);
  228. System.out.println("ThirdActivity "+object2);
  229. Toast.makeText(getApplicationContext(),"ThirdActivity运行完成",0).show();
  230. }
  231. }
  1.  

==========效果图 =================

兼容安卓的javaproject1.0的更多相关文章

  1. H5嵌入原生开发小结----兼容安卓与ios的填坑之路

    一开始听说开发H5,以为就是做适配现代浏览器的移动网页,心想不用管IE了,欧也.到今天,发现当初too young too simple,兼容IE和兼容安卓与IOS,后者让你更抓狂.接下来数一下踩过的 ...

  2. 兼容安卓和ios实现一键复制内容到剪切板

    实现代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <m ...

  3. IKAnalyzer兼容Lucene 5.4.0版本抛出异常?

    ava.lang.AbstractMethodError: org.apache.lucene.analysis.Analyzer.createComponents(Ljava/lang/String ...

  4. Android源码编译全过程记录(基于最新安卓5.1.0)【转】

    本文转载自:http://blog.csdn.net/drg1612/article/details/44802533 我的编译条件: 1 Ubuntu Kylin 14.04 长期支持版 下载地址 ...

  5. 史上最简单JS复制功能,兼容安卓ios!

    1.JS复制原理: 被复制内容的元素不能被其他元素遮盖,否则无效.  (设置opacity透明为0,不可以设置display:none); 2.常规的复制方法 function copyUrl2() ...

  6. IE兼容事件绑定V1.0

    想要兼容IE678,少用原型,因为它们没有完全实现ECMA-262规范 (function(window){ //兼容IE678时少用原型,因为它没有完全遵循ECMA-262规范 //衬垫代码:isA ...

  7. 模糊搜索框(H5),兼容安卓和ios(令人头大的ios输入法)

    项目里要可以实现,按照模糊,于是从jq22网站找到一个代码,效果如图: 具体的html代码:(复制,需要引入jq相关的支持文件) <!DOCTYPE html PUBLIC "-//W ...

  8. 考试宝典-真题园安卓AppV2.1.0新版发布啦,全新界面,全新体验,全面适配Android 5.0&6.0系统!

    真题园移动客户端是真题园网 http://www.zhentiyuan.com 旗下的一款学习考试应用App. 1.全新适配Android5.0.6.0系统,重新优化架构网络通信模块. 2.全新清爽U ...

  9. 如何解决vux不兼容安卓低版本问题

    最近做移动端H5页面用VUX来写UI组件这块.ios测试的时候没啥大问题,不过在4.4版本的华为手机上测试就崩了.接下来详细记述下崩的几个点. 第一:vux自带的提示框,在低版本安卓系统上全不是居中显 ...

随机推荐

  1. Spring HTTPInvoker原理猜想(HTTP+序列化)

    没有查看源码,仅作参考 实现步骤: 一,客户端 (1),远程调用信息封装为远程调用对象 (2),序列化写入到远程调用HTTP请求中 (3),向服务器发送 (4),服务器端返回的HTTP响应结果 (5) ...

  2. 懒与馋的平衡:餐饮O2O市场广阔,发展不易

    餐饮行业是众多行业中O2O起步较早的,现在方兴未艾的团购站点中最先涉足的领域就有餐饮版块.长时间的合作推广,很多餐饮商家已经从中尝到甜头,可以说餐饮行业市场基础培育的比較好,所以餐饮O2O 已经是大势 ...

  3. hdu 4920 Matrix multiplication(矩阵乘法)2014多培训学校5现场

    Matrix multiplication                                                                           Time ...

  4. Guest与virtio netdev交互模式

    Qemu为virtio设备分配了专门的pci设备ID,device IDs (vendor ID 0x1AF4) from 0x1000 through 0x10FF,而pci子系统中的厂商ID和设备 ...

  5. chrome插件演示,经js转让chrome api清除浏览器缓存

    一个简单的chrome插件演示,主页脚本.内容脚本.背景和脚本之间的通信api呼叫.在此之上可以延长通话等chrome api. 下载链接:http://download.csdn.net/detai ...

  6. iOS_67控件外观对照

    iOS 7 button无边框,操作栏透明,控制器全屏 Tab Bar 对照 iOS 7                                                         ...

  7. 自己主动机串标:Directed Acyclic Word Graph

    trie -- suffix tree -- suffix automa 有这么几个情况: 用户输入即时响应AJAX搜索框, 显示候选名单. 搜索引擎keyword统计数量. 后缀树(Suffix T ...

  8. Net 项目构建基于Jenkins + Github + Mono 的持续集成环境

    Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...

  9. 使用JS意识到自己主动提交表单

    今天将需要chat集成到客户的网站上去,注册用户链接登录这个网站后点击实现网站直接登录chat向上.我不停chat原来的登录界面,采纳JS当页面跳转技术,随着时间的推移自己主动填写表格.自己主动提交表 ...

  10. NSIS:设置文件属性的方法

    原文 NSIS:设置文件属性的方法 在NSIS中,有以下方法可以对文件的属性进行设置.   一是通过NSIS的指令SetFileAttributes.   多重属性可用 ' | ' 隔开,有效的属性为 ...