更新片段

时间:2016-03-04 10:22:24

标签: android android-fragments

我制作曲目。我有联系人列表和添加新联系人的按钮。当我点击按钮添加时,一个新的片段打开,我可以写出联系人的信息。当我点击添加时,我会回到第一个片段,我想刷新联系人列表。

我的联系人保存在一个单身人士的课程中,所以为了得到我的联系人列表,我需要写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();
            }
        });

0 个答案:

没有答案