Android:我们什么时候使用getIntent()?

LKM*_*LKM 8 android android-intent onactivityresult

我不明白为什么我们使用方法getIntent().

因为,当我们需要那个方法时,我们可以使用方法onActivityResult().

但是通过使用方法getIntent(),它可能会导致NullPointerException.

任何人都可以解释我(android新手)?

Ken*_*eth 22

http://developer.android.com/reference/android/app/Activity.html#getIntent()

返回启动此活动的意图.

如果您使用某些数据启动活动,例如通过执行

Intent intent = new Intent(context, SomeActivity.class);
intent.putExtra("someKey", someData);
Run Code Online (Sandbox Code Playgroud)

您可以使用新活动中的getIntent检索此数据:

Intent intent = getIntent();
intent.getExtra("someKey") ...
Run Code Online (Sandbox Code Playgroud)

因此,它不是用于处理来自Activity的返回数据,例如onActivityResult,而是用于将数据传递给新的Activity.

  • 答案需要一些修改,因为“getExtra”方法被其他变体所取代,例如“getStringExtra”或“getExtras”(不确定“getExtra”是否存在)。 (3认同)
  • 想知道我应该把getIntent()放在哪里。在onStart吗?onCreate?活动主线程? (2认同)

Rod*_*igo 5

getInent用于将数据从一个活动传递到另一个活动,例如,如果您想从一个已命名的活动切换startActivity到另一个已命名的活动,endActivity并且您希望从中startActivity知道数据,endActivity请执行以下操作:

startActivity

String dataToTransmit="this info text will be valid on endActivity";
Intent intent =new Intent(this, endActivity.class);
intent.putExtra("dataToTransmitKey",dataToTransmit);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

endActivity

Intent intent = getIntent();
String dataTransmited=intent.getStringExtra("dataToTransmitKey");
Run Code Online (Sandbox Code Playgroud)