我不明白为什么我们要使用getIntent()
方法。
因为当我们需要该方法时,我们可以使用onActivityResult()
方法。
但是通过使用getIntent()
方法,可能会导致NullPointerException
。
我不明白为什么我们要使用getIntent()
方法。
因为当我们需要该方法时,我们可以使用onActivityResult()
方法。
但是通过使用getIntent()
方法,可能会导致NullPointerException
。
http://developer.android.com/reference/android/app/Activity.html#getIntent()
返回启动此活动的意图。
如果您使用某些数据启动了 Activity,例如通过执行
Intent intent = new Intent(context, SomeActivity.class);
intent.putExtra("someKey", someData);
您可以使用新活动中的 getIntent 方法检索此数据:
Intent intent = getIntent();
intent.getExtra("someKey") ...
因此,它不是用于处理来自活动的返回数据,例如onActivityResult,而是用于向新活动传递数据。
getIntent()
放在哪里呢?在onStart还是onCreate中?还是Activity的主线程中? - ki9getExtra
方法已被其他变体替代,例如getStringExtra
或getExtras
(不确定getExtra
是否曾经存在)。 - user2711811getIntent
用于在活动之间传递数据,例如,如果您想从一个名为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);
关于 endActivity
:
Intent intent = getIntent();
String dataTransmited=intent.getStringExtra("dataToTransmitKey");
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(ItemListView.this, ViewItemClicked.class);
String name = itemList.get(position).getString(1);
String description = itemList.get(position).getString(2);
String something_else = itemList.get(position).getString(3);
intent.putExtra("name", name);
intent.putExtra("description", description);
intent.putExtra("something_else", something_else);
startActivity(intent);
}
Intent intent = getIntent();
String name = intent.getStringExtra("name");
String description = intent.getStringExtra("description");
String something_else = intent.getStringExtra("something_else");
edittext.setText(name);
Intent intent = new Intent(context, HomeActivity.class);
intent.putExtra("yourData", yourData);
Intent intent = getIntent();
intent.getExtra("yourData")
将数据发送回同一活动,getIntExtra() 在我的情况下有效:
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
Button reset_btn = (Button) findViewById(R.id.reset);
reset_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= getIntent();
int counter = intent.getIntExtra("Num", 0);//"Num" is the key, 0 is an initial value
counter = counter + 1;
Log.d("number of reset >>>>>","counter= " + String.valueOf(counter));
intent.putExtra("Num", counter);
finish();
startActivity(intent);
}
});
}
//Sending data...
//creating and initializing an Intent object
Intent intent = new Intent(this, NextActivity.class);
//attach the key value pair using putExtra to this intent
String user_name = "Jhon Doe";
intent.putExtra("USER_NAME", user_name);
//starting the activity
startActivity(intent);
//Retrieving data from intent
//get the current intent
Intent intent = getIntent();
//get the attached extras from the intent
//we should use the same key as we used to attach the data.
String user_name = intent.getStringExtra("USER_NAME");
//if you have used any other type of data, you should use the
//particular getExtra method to extract the data from Intet
Integer user_id = intent.getIntExtra("USER_ID");
float user_rating = intent.getFloatExtra("USER_RATING");
Note: you should specify type of that before sending the value.
Activity#getIntent()
吗? - DeeV