我制作曲目。我有联系人列表和添加新联系人的按钮。当我点击按钮添加时,一个新的片段打开,我可以写出联系人的信息。当我点击添加时,我会回到第一个片段,我想刷新联系人列表。
我的联系人保存在一个单身人士的课程中,所以为了得到我的联系人列表,我需要写Contacts.getInstance().getContacts();
(不要对这个概念是怎么说的,它是什么?不是我的代码,我简化它以使这个主题更容易理解。)
所有工作但不刷新联系人列表。 所以有我的代码:
有按钮事件的代码,用于添加新联系人
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
String name = ((EditText) myView.findViewById(R.id.nom)).getText().toString();
Contacts.getInstance().add(name);
} catch (NullPointerException e) {
throw e;
} finally {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.popBackStack();
}
}
}); :
当此事件到达时,会显示显示所有联系人的片段,我用它来进行更新:
@Override
public void onResume() {
super.onResume();
LinearLayout listContact = (LinearLayout) myView.findViewById(R.id.listContact);
listContact.removeAllViews();
getListContact(listContact);
}
此方法有效,但在添加新联系人后显示此片段时,该方法无法刷新。当我锁定/解锁手机时,它可以正常工作。
我知道原因,因为事件onResume()
附加到活动而不是片段。我在网上搜索,我不理解提出的解决方案。那么,我应该做些什么改变?
编辑:
我使用这个来调用ListContactFragment中的AddContactFragment:
addContact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
FragmentAddContact fragment2 = new FragmentAddContact();
transaction.add(R.id.myFrameLayout, fragment2);
transaction.addToBackStack("FragmentAddContact");
transaction.commit();
}
});