此处我有3个活动,ActivityA
包含显示用户名的textView
,ActivityB
仅包含重定向ActivityC
的按钮,ActivityC
包含EditText
并保存按钮。
现在,我想在点击保存按钮时更新从ActivityC
到直接ActivityA
的更新文本,而不刷新任何活动,而不是我必须做的事情?你能建议简单的方法吗?
我在复杂项目中有相同的要求,我需要使用api调用在服务器端保存用户位置,并在ActivityA
中显示更新的数据。
答案 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/