android,Intent intent = getIntent(); 获得Intent.写在onCreate()外面为啥就报错呢

android,Intent intent = getIntent(); 获得Intent.写在onCreate()外面为啥就报错呢,第1张

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();  // Activity1

            intentputExtra("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传递过来的值呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9343357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存