Arc*_*pgc 19 android android-intent
就像我可以使用以下方法将数据从一个活动发送到另一个
intent.putExtra("Name", Value);
Run Code Online (Sandbox Code Playgroud)
当我finish()
用来回到之前的活动时,我该如何发送数据.
在我的应用程序中,Activity_A
我要去Activity_B
.在Activity_B
我在地图上标记一个位置,它给我经度和纬度.然后我想用这个lat和lng Activity_A
.但我不想回到Activity_A
使用意图,因为我不想重新创建,Activity_A
因为已经填充的一些数据将丢失.
Shr*_*ant 28
在使用时intent.putExtra("Name", Value);
,在完成活动时也要使用相同的东西.
例如:
从activityA你可以调用activityB:
intent.putExtra("Name", Value);
now instead of startActivity() use `startActivityForResult()`
Run Code Online (Sandbox Code Playgroud)
从activityB开始,在完成活动时,请致电:
setResult(RESULT_OK);
Run Code Online (Sandbox Code Playgroud)
现在在activityA中,您onActivityResult
将被调用,如:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
}
Run Code Online (Sandbox Code Playgroud)
所以你可以这样处理它.
Hei*_*nzi 22
在活动A中:
// Add more, if you call different activities from Activity A
private static final REQUEST_GET_MAP_LOCATION = 0;
void doSomething() {
...
startActivityForResult(theIntentYouUseToStartActivityB, REQUEST_GET_MAP_LOCATION);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_GET_MAP_LOCATION && resultCode == Activity.RESULT_OK) {
int latitude = data.getIntExtra("latitude", 0);
int longitude = data.getIntExtra("longitude", 0);
// do something with B's return values
}
}
Run Code Online (Sandbox Code Playgroud)
在活动B中:
...
setResult(Activity.RESULT_OK,
new Intent().putExtra("latitude", latitude).putExtra("longitude", longitude));
finish();
...
Run Code Online (Sandbox Code Playgroud)
打电话给你的Activity_B
使用startActivityForResult()
,从您Activity_A
:
//Starting a new Intent
Intent nextScreen = new Intent(getApplicationContext(), Activity_B.class);
// starting new activity
startActivityForResult(nextScreen,1000);
Run Code Online (Sandbox Code Playgroud)
完成后Activity_B
,您调用setResult()
设置数据,然后finish()
像这样
//Starting the previous Intent
Intent previousScreen = new Intent(getApplicationContext(), Activity_A.class);
//Sending the data to Activity_A
previousScreen.putExtra("Bla"," Blabla");
setResult(1000, previousScreen);
finish();
Run Code Online (Sandbox Code Playgroud)
这将带您回到以前的Activity_A
.
在Activity_A
,覆盖onActivityResult()
.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
String bla = data.getStringExtra("Bla");
}
Run Code Online (Sandbox Code Playgroud)
在这里找到
归档时间: |
|
查看次数: |
17940 次 |
最近记录: |