将更新的数据传递到主页活动而不刷新任何活动

时间:2018-02-03 13:45:20

标签: android android-intent android-activity

此处我有3个活动,ActivityA包含显示用户名的textViewActivityB仅包含重定向ActivityC的按钮,ActivityC包含EditText并保存按钮。

enter image description here

现在,我想在点击保存按钮时更新从ActivityC到直接ActivityA的更新文本,而不刷新任何活动,而不是我必须做的事情?你能建议简单的方法吗?

我在复杂项目中有相同的要求,我需要使用api调用在服务器端保存用户位置,并在ActivityA中显示更新的数据。

3 个答案:

答案 0 :(得分:1)

另一种方法是使用LocalBroadcastManager。 代码如下。

//ACTIVITY A CODE

TextView username_tv;
String username;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    username_tv = (TextView) findViewById(R.id.username_tv);

    //Get your username and store it in username
    username = getYourUsername();

    username_tv.setText(username);

    LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
    lbm.registerReceiver(receiver, new IntentFilter("USER_NAME_CHANGED_ACTION"));  
  }

  public BroadcastReceiver receiver = new BroadcastReceiver() {
  @Override
    public void onReceive(Context context, Intent intent) {
      if (intent != null) {
        username = intent.getStringExtra("username");
        username_tv.setText(username);            
      }
  }
};

//ACTIVITY C CODE

//ADD this code to your 'SAVE' Button Listener
Intent intent = new Intent("USER_NAME_CHANGED_ACTION");
intent.putExtra("username", editText.getText().toString());
// put your all data using put extra 
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

有关localBroadcastManager的更多信息,请查看here

答案 1 :(得分:0)

我不明白为什么你需要这个,但是你可以通过在EditText中保存ActivityC的值来实现这一点,SparedPreferences here是一个如何制作它的例子。然后,如果SparedPreferences中保存了值,并且有一些获取值并将其设置为“用户名”onResume(),则应检查ActivityA TextView方法{/ 1}}。

答案 2 :(得分:0)

EventBus将解决您的问题 http://greenrobot.org/eventbus/