2015-11-20 122 views
2

我在mainActivity中有一个对话框提示。如果用户关闭了对话框,我需要在fourthFragment内的一个ListView项目中显示红点(根据下图中的fourthFragment中的红框)。Android:点击按钮上的另一个活动刷新/更新片段

问题是只有在关闭应用程序并重新打开它后才更新红点,因为fourthFragment已在用户关闭对话框之前完成创建。如何在Dialog关闭后刷新/更新fourthFragment,以便立即显示红点?

简短描述:

  • mainActivity:上对话框关闭>商店showRedDot = “1” 到本地分贝
  • fourthFragment:的onCreate>从本地分贝读showRedDot,如果 “1”,显示的红点。 (此问题,当的onCreate,showRedDot仍然是“0”,所以我需要更新fourthFragment布局对话框关闭后。)

enter image description here

+0

你可以在对话框单击后尝试刷新主活动的第四个片段吗? – Nivedh

+0

一种方法是使用本地广播接收器,在对话框关闭时广播消息并在片段类中侦听事件。不确定的表现。 –

+0

使用Handler()在一段时间内刷新你的列表视图并通知它,所以你将克服这个问题 –

回答

1

尝试接口或广播接收器如上。如果其他刷新片段为

// Reload current fragment 
Fragment frg = null; 
frg = getSupportFragmentManager().findFragmentByTag("Your_Fragment_TAG"); 
final FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.detach(frg); 
ft.attach(frg); 
ft.commit(); 
+0

谢谢,我现在能够更新我的红点。在第四个片段onViewCreated():'getActivity()。getSupportFragmentManager()。beginTransaction()。add(this,“general_setting_fragment_tag”);';因此在关闭对话框后的mainActivity中:'Fragment frg = getSupportFragmentManager()。findFragmentByTag(“general_setting_fragment_tag”); final FragmentTransaction ft = getSupportFragmentManager()。beginTransaction(); ft.detach(frg); ft.attach(frg); ft.commit();' –

1

你调用接口来推动事件解雇(点击按钮)的对话。 像这样:

public interface MyDialogListener { 
    void OnCloseDialog(); 
} 

public class fourthFragment extend Fragment implements MyDialogListener { 
    public void SomeMethod() { 
     MyDialog myDialog = new MyDialog(this, this); 
     myDialog.show(); 
    } 

    public void OnCloseDialog() { 
     // Do update your listview in here(maybe call method initialize data for listview) 
    } 

} 

public class MyDialog extends Dialog { 
    MyDialogListener mListener; 

    public MyDialog (Context context, MyDialogListener listener) { 
     super(context, R.style.Dialog); 
     mListener = listener; 
    } 

    public void onClick(View view) { 
     switch (view.getId()) { 
      case R.id.CloseButton: 
       // Push event when Dialog close(or anything) 
       mListener.OnCloseDialog(); 
       dismiss() 
       break; 
      default: 
       //... 
     } 
    } 
} 
+0

嗨,感谢您的回复。不知道我是否误解了你的代码,我的对话框在我的'mainActivity'里面,但是我想要更新的是我的'fourthFragment',我怎样才能实现你的方法?或者让我们说,我如何更新'mainActivity'的'fourthFragment'列表视图项? –

+0

你可以听在mainActivity对话的情况下,使mainActivity有像[公共静态MyDialogListener dialogListener]属性 在fourthFragment使[mainActivity.dialogListener =新MyDialogListener(){ 公共无效OnCloseDialog(){// 做更新列表视图中这里 } } ] – hoangdv

+0

它为我工作我正在使用片段\ –

相关问题