A. android中第一个activity的onCreate中就用getIntent()方法。为什么不会报空指针呢
这个intent一定是不会未空的,MainActivity是的intent一开是ActivityManager发出来的,所以是不为空的
B. Android Intent 如何接收到指定的Intent传递过来的值呢
首先,尽量不要用try{}catch去捕捉能用判断规避的异常,那样会影响效率,每次出现异常,虚拟机要抓错误调用堆栈。所以,最好的方式是通过判断去规避。
按你的思路,可以先判断getIntent.getExtras()是否为null。
Intent
_getIntent
=
this.getIntent();
if(
_getIntent.getExtras()
!=
null){
Log.i("YuryLog","理论上只有点了确认键才执行");
receiveName
=
_getIntent.getExtras().getString("sendName");
receiveEatSomething
=
_getIntent.getExtras().getString("sendeatSomething");
receiveCopies
=
_getIntent.getExtras().getString("sendcopies");
......
要指出的是,上述代码,最好使用getXXXExtra这类方法,它不会出现空指针(除了少数几个,比方说getStringExtra)。
需要设定默认值的,在没有值时它会返回默认值;没有设置默认值的,在没有值时会返回null,针对这类判空一下。
可以看下getBooleanExtra的源码:
public
boolean
getBooleanExtra(String
name,
boolean
defaultValue)
{
return
mExtras
==
null
?
defaultValue
:
mExtras.getBoolean(name,
defaultValue);
}
而getExtras()在没有值时会返回null,看下源码:
public
Bundle
getExtras()
{
return
(mExtras
!=
null)
?
new
Bundle(mExtras)
:
null;
}
所以,最好不要用getIntent().getExtras()这种方式,换用getIntent().getXXXExtras(),这样针对有设置默认值的就不需要判空了。
activity之间传值,是没有机制可以确定哪个activity传过来的。这是考虑到代码的可扩展性,解耦。要确定哪个activity发过来,在intent创建那里多传个布尔值就行,比方说下面的代码。
发送
intent.putExtra("fromXXActivity",
true);
接收
if
(getIntent().getBooleanExtra("fromXXActivity",
false))
{
......
//
这里,你就可以安全的接收那个activity发过来的所有值。
}
C. Android开发中,onCreate方法中经常有直接调用的方法如:getIntent(),这样的方法都是Activity定义过的吗
getIntent()得到的startActivity(intent)中传递过来的Intent的,就像你说说的那样,是Activity实现的,你继承了Activity,所以自然就能用了。
getDefaultAdapter()这个不是Activity的
D. 我是android 开发的 在mainActivity中调到 CaptureActivity 然后在跳回来 getIntent取不到值
本来就获取不到。返回的时候没有用intent。。这样写的话 你要用startacitvityforresult 来启动第二个页面
E. 安卓getIntent();方法
原方法为 public Intent getIntent() ,它是Intent类本身的一个方法,可以直接返回Intent实例。调用其它类的方法才用对象或对象(静态方法用类名)。这样的例子有很多啊,例如:getBaseContext(), 得到一个Context的引用。
F. android this.getIntent(); 和new Intent();有什么 区别呢
不要用getintent
getintent是用来获取前一个activity的的附加数据的
比如oneactivity用intent启动twoactivty,并且用putextra方法加入了一些数据,在twoactivity就可以getintent,使用getextra获取额外数据
G. android 中如何使用intent通过传递变量传递数据
Intent intent =new Intent(AActivity.this,BActivity.class);
intent.putExtra("num1", num1) ;
intent.putExtra("num2", num2) ;
startActivity(intent) ;
另一个接受的是Activity是 :
String num1 =this.getIntent().getStringExtra("num1") ;
String num2 =this.getIntent().getStringExtra("num2") ;
基本就这样