getIntent().getStringExtra返回Null的问题

getStringExtra()传值的方式一般为:上一个活动传过来,下一个活动接收。
之前也是这么用,值都不为空,今天搞了一下发现,上一个活动传过来的值一直为空,后来发现原因很简单:

我的第二个活动设置的模式为:android:launchMode="singleTask"
把这个去掉后就可以了。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
1 这是什么?这个库提供了:一个轻量级的Activity代理框架(ActivityAttacher,使用方式基本和Activity一样),目的在于不必在Manifest反复声明Activity同时提供了一个轻量级的Bundle机制(SimpleBundle,使用方式基本和Bundle一样),目的在于在Activity之间传递参数时考虑序列化问题,适用于进程内通信提供了一个轻量级的OnActivityResult机制(OnResultCallback,使用方式基本和OnActivity不一样)状态栏一体化的简单封装Activity和Fragment状态保存的问题其他Activity和Fragment问题的解决方案,后期一个一个加2 ActivityAttacher的使用        (1) manifestmanifest里只需要声明:主Activity有特殊需求的Activity,如支持旋转模板Activity,暂时只支持一个启动模式对应一个模板Activity模板Activity有几个默认配置项,如果需要更改,也需要声明自己的ActivityManifest中的声明:<activity             android:name="com.cowthan.sample.MainActivity"             android:configChanges="orientation|screenSize|keyboardHidden|navigation"             android:screenOrientation="portrait"             android:theme="@style/AppTheme"             >             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                 <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>         <activity             android:name="org.ayo.app.base.TmplActivityStandard"             android:configChanges="orientation|screenSize|keyboardHidden|navigation"             android:screenOrientation="portrait"             android:launchMode="standard"             android:theme="@style/AyoTransparentTheme" />         <activity             android:name="org.ayo.app.base.TmplActivitySingleTask"             android:configChanges="orientation|screenSize|keyboardHidden|navigation"             android:screenOrientation="portrait"             android:launchMode="singleTask"             android:theme="@style/AyoTransparentTheme" />         <activity             android:name="org.ayo.app.base.TmplActivitySingleTop"             android:configChanges="orientation|screenSize|keyboardHidden|navigation"             android:screenOrientation="portrait"             android:launchMode="singleTop"             android:theme="@style/AyoTransparentTheme" />         <activity             android:name="org.ayo.app.base.TmplActivitySingleInstance"             android:configChanges="orientation|screenSize|keyboardHidden|navigation"             android:screenOrientation="portrait"             android:launchMode="singleInstance"             android:theme="@style/AyoTransparentTheme" />    (2) ActivityAttacherActivityAttacher的意义:ActivityAttacher就是附着在上面4个模板Activity里的Activity代理ActivityAttacher中持有一个Activity实例对象,是在onCreate时赋值的ActivityAttacher可以处理Activity中的所有配置和生命周期ActivityAttacher提供的接口,原则上应该完全仿Activity,这一点类似v7源码中的和AppCompactActivity相关的一个delegate类,但不知道这个类是干什么用的(3) 定义Activity看代码,这两个只有基类不一样,内部代码应该是一样的,其中继承AyoActivity的是一个普通Activity,需要去manifest声明, 而继承AyoActivityAttacher,就不需要再去manifest声明了public class SampleActivity extends AyoActivityAttacher{     public static void start(Context c, boolean takeSystemBar, int lanuchMode, OnResultCallBack callBack){         SimpleBundle sb = new SimpleBundle();         sb.putExtra("takeSystemBar", takeSystemBar);         ActivityAttacher.startActivity(c, SampleActivity.class, sb, false, lanuchMode, callBack);     }     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.ac_tmpl);     } } public class SampleActivity extends AyoActivity{     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.ac_tmpl);     } }    (4) 启动ActivityAttacher启动方式变成这样:public static void start(Context c, boolean takeSystemBar, int lanuchMode, OnResultCallBack callBack){     SimpleBundle sb = new SimpleBundle();     sb.putExtra("takeSystemBar", takeSystemBar);     ActivityAttacher.startActivity(c, SampleActivity.class, sb, false, lanuchMode, callBack); }SimpleBundle:功能类似于intent或者bundle,存的是传到下一个Activity的参数取出参数:boolean takeSystemBar = getIntent().getBooleanExtra("takeSystemBar");这里,在Activity之间传的都是引用,不再需要考虑序列化问题,当然只适用于app单进程内OnResultCallBack是接收Activity的回传结果如何回传:getResultCallback().onResult("代替OnActivityReslt和setResult"); finish();lanuchMode是选择Activity的启动模式,也就是选择模板:ActivityAttacher.LAUNCH_MODE_STANDARDActivityAttacher.LAUNCH_MODE_SINGLE_TASKActivityAttacher.LAUNCH_MODE_SINGLE_TOPActivityAttacher.LAUNCH_MODE_SINGLE_INSTANCE    (5) Activity主题这里提供了两个主题:AyoTransparentTheme和AyoTheme,没啥特殊的
简易计算机的设计 摘要:Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能 够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新 兴力量。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具 有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的、应用程序 可以轻松的嵌入网络、应用程序可以并行运行。 一、实训目的 1、了解Android系统,学会Android开发环境的搭建。 2、了解Eclipse,学会用Eclipse和Java 开发一个Android程序。 3、进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性 ,能够熟练的应用面向对象的思想和设计方法解决实际问题的能力。 4、巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Ecli pse、JCreator等开发工具的运用,拓宽常用类库的应用。 二、实训任务 1、Activity的相关知识 简单理解Activity 代表一个用户所能看到的屏幕,Activity 主要是处理一个应用的整体性工作。Activity是最基本的Android 应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。每一个活动都被实现 为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户 接口,并对事件做出响应。大多数的应用是由多个屏幕显示组成,因而要用到多个Acti vity。 (1)Activity的相关方法及相关函数:void onCreate(Bundle)首次启动时调用,接受参数:Null or savedInstanceState(保存的以前某些状态信息); void onStart() 说明了将要显示给用户的活动;void onRestart()将处于停止状态的活动重新显示给用户;void onResume()用户可以开始与活动进行交互时调用。如动画播放和音乐播放;void onPause()活动将要进入后台运行时调用。(此时前台启动了另一个活动);void onStop()不需要某个活动了,就调用;void onDestroy()销毁活动。 (2)多个Activity之间的跳转:通过Intent类实现屏幕之间的跳转(包括没有参数关系 和需要传递参数两种情况)。 (3)两个Activity之间进行数据交换:startActivity() 只有Intent一个参数;public void startSubActivity(Intent intent, int requestCode) (requestCode:用来标识某一个调用,一般定义一个常量)。传过去:函数原型为: public Intent setData(ContentURI data) 然后,参数带到新的Activity后,同样用Activity.getIntent()函数可得到当前过来的 Intent对象,然后用getData()就取到参数了。 传回来:函数原型为: public final void setResult(int resultCode, String data)。 2、Intent的相关知识 Intent 是描述应用想要做什么。Android 使用了Intent 这个特殊类,实现在屏幕与屏幕之间移动。Intent 数据结构两个最重要的部分是动作和动作对应的数据。Intent类绑定一次操作,它负责 携带这次操作所需要的数据以及操作的类型等。 3、Layout 用于用户界面设计。包含AbsoluteLayout, FrameLayout,GridView, LinearLayout, ListLayout, RadioGroup, TableLayout等等。 (1)线性布局LinearLayout:垂直:android:orientation="vertical";水平:andro id:orientation="horizontal" (2)相对布局RelativeLayout:让子元素指定它们相对于其他元素的位置(通过ID 来指定)或相对于父布局对象。在RelativeLayout布局里的控件包含丰富的排列属性:L ayout above:控件在指定控件的上方;Layout below:控件在指定控件的下方;Layout to left of…… 根据要求,系统实现以下功能:计算器界面友好,具有基本的加、减、乘、除功能, 支持触屏手机,整个程序基于android技术开发。 三、设计流程 1、系统的软件结构图 2、功能的操作流程 得出程序结果后,输入数据,选择运算符号,再输入数据,选择等号,即可得到结果 。 3、计算

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值