Intent intent = getIntent();// 获得Intent
String username = intentgetStringExtra("commingrisoftUSERNAME");// 获得用户输入的用户名
String password = intentgetStringExtra("commingrisoftPASSWORD");// 获得用户输入的密码
setContentView(Rlayoutsecondactivity_layout);下面
packageManagergetInstalledApplications()返回一个列表都是安装在设备上的应用程序包。如果我们把 flag GET_UNINSTALLED_PACKAGES设定,一个列表中的所有应用,包括那些设置为dont_delete_data(部分已安装的应用程序的数据目录)将返回。
你可以看到附件中的截图,我们将创建一个列表显示所有已安装的应用程序。
snippet_list_rowxml--------------------这个布局是由ListView适配器用于表示应用程序的细节。它显示应用程序图标、应用程序名称和应用程序包。
<xml version="10" encoding="utf-8"><LinearLayout xmlns:android=">
首先,尽量不要用try{}catch去捕捉能用判断规避的异常,那样会影响效率,每次出现异常,虚拟机要抓错误调用堆栈。所以,最好的方式是通过判断去规避。
按你的思路,可以先判断getIntentgetExtras()是否为null。
Intent
_getIntent
=
thisgetIntent();
if(
_getIntentgetExtras()
!=
null){
Logi("YuryLog","理论上只有点了确认键才执行");
receiveName
=
_getIntentgetExtras()getString("sendName");
receiveEatSomething
=
_getIntentgetExtras()getString("sendeatSomething");
receiveCopies
=
_getIntentgetExtras()getString("sendcopies");
要指出的是,上述代码,最好使用getXXXExtra这类方法,它不会出现空指针(除了少数几个,比方说getStringExtra)。
需要设定默认值的,在没有值时它会返回默认值;没有设置默认值的,在没有值时会返回null,针对这类判空一下。
可以看下getBooleanExtra的源码:
public
boolean
getBooleanExtra(String
name,
boolean
defaultValue)
{
return
mExtras
==
null
defaultValue
:
mExtrasgetBoolean(name,
defaultValue);
}
而getExtras()在没有值时会返回null,看下源码:
public
Bundle
getExtras()
{
return
(mExtras
!=
null)
new
Bundle(mExtras)
:
null;
}
所以,最好不要用getIntent()getExtras()这种方式,换用getIntent()getXXXExtras(),这样针对有设置默认值的就不需要判空了。
activity之间传值,是没有机制可以确定哪个activity传过来的。这是考虑到代码的可扩展性,解耦。要确定哪个activity发过来,在intent创建那里多传个布尔值就行,比方说下面的代码。
发送
intentputExtra("fromXXActivity",
true);
接收
if
(getIntent()getBooleanExtra("fromXXActivity",
false))
{
//
这里,你就可以安全的接收那个activity发过来的所有值。
}
原方法为 public Intent getIntent() ,它是Intent类本身的一个方法,可以直接返回Intent实例。调用其它类的方法才用对象或对象(静态方法用类名)。这样的例子有很多啊,例如:getBaseContext(), 得到一个Context的引用。
Intent(意图)主要是解决Android应用的各项组件之间的通讯。
为了实现传递数据这个目的需要以下步骤
Activity1需要构造一个 Intent,这个Intent用于告诉系统,我们要做“查看”动作
intent可调用putExtra来存放想要传递的数据
然后调用setClass,设置Activity1和欲调用的组件Activity2
最后调用startActivity将构造的Intent传入,系统会根据此Intent中的描述,到Activity1中找到满足此Intent要求的Activity,系统会调用找到的 Activity2最终传入Intent
在Activity2中可使用getIntent来获取传递的Intent,并通过获取数据的方法来获取数据
代码示例:
Intent intent = new Intent(); // Activity1intentputExtra("one", num1);
intentputExtra("two", num2);
intentsetClass(FirstActivitythis, SecondActivityclass);
startActivity(intent); Intent intent = getIntent(); //Activity2
String num1 = intentgetStringExtra("one");
String num2 = intentgetStringExtra("two");
int ret = IntegerparseInt(num1) + IntegerparseInt(num2);
resultsetText(ret+"");
注意:我们在使用intent的时候可以使用bundle传递复制的数据类型。
Intent没有这种方法,自己把类名作为StringExtra放入Intent里面,取出来再判断呗。“想记录下来是从哪个activity跳转来的”跟Android的设计理念有点相背离吧。
在上个界面传递数据,下个界面取出;如传递一个数字1:在第一个activity中:
int a=1;
Intent i = new Intent();
iputextra("",a);
start
第二个activity取出:
Intent i = new Intent();
int a = igetExtra("",0);
谢谢
以上就是关于android,Intent intent = getIntent();// 获得Intent.写在onCreate()外面为啥就报错呢全部的内容,包括:android,Intent intent = getIntent();// 获得Intent.写在onCreate()外面为啥就报错呢、如何获得Android手机的软件安装列表、Android Intent 如何接收到指定的Intent传递过来的值呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)