我有一个显示用户名的主要活动。当用户想要编辑用户名时,它将转到包含代码的个人资料活动:
Intent intent=new Intent(MainActivity.this, ProfileActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("username", username);
startActivity(intent);
用户编辑用户名(保存在服务器上)后,可以按返回键返回上一个(主)活动。但是,此时,用户名未更新,因为没有传输数据。
当用户从个人资料活动返回主要活动时,如何传输更新后的用户名?
答案 0 :(得分:2)
您可以将活动作为startActivityForResult(Intent i, int requestcode);
和第二项活动
Intent intent = new Intent();
intent.putExtra("key", yourvalue);
setResult(1, intent);
finish();
这将触发onActivityResult您以前的活动。
protected void onActivityResult(int arg0, int arg1, Intent arg2) {
//get the data from arg2
}
答案 1 :(得分:1)
您需要为结果启动活动。按照步骤进行操作
int REQUEST_CODE = 1;
startActivityForResult(intent, REQUEST_CODE);
Intent resultIntent = new Intent();
resultIntent.putExtra("NAME_OF_THE_PARAMETER", valueOfParameter);
...
setResult(Activity.RESULT_OK, resultIntent);
finish();
覆盖@onActivityResult(...)
。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) { // Please, use a final int instead of hardcoded int value
if (resultCode == RESULT_OK) {
String value = (String) data.getExtras().getString("NAME_OF_THE_PARAMETER");
参考
答案 2 :(得分:0)
首先完成()您的主要活动。
Intent intent=new Intent(MainActivity.this, ProfileActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("username", username);
startActivity(intent);
finish(); // Add this
然后在所有更新结束后,回想一下您的主要活动, 像这样, 从您的ProfileActivity调用MainActivity。
Intent intent=new Intent(ProfileActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish(); // Add this
默认情况下从服务器加载用户名
答案 3 :(得分:0)
您可以将更新的配置文件名称存储在Application类中,因为Application类只在我们启动应用程序时创建一次。您可以轻松更新UI。应用程序类只是一个Android项目中的一个,它在全球范围内使用。我认为这对你有帮助。