我有一个DialogFragment
,当用户点击对话框中的“确定”时,它会被解除,我想重新绘制活动布局。
我在viewflipper
中使用Activity
三种布局。我是否在片段中使用getActivity()
来访问viewflipper
,以便更新布局视图?
部分活动文件:
...
private ViewFlipper viewflipper;
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cardviewinput);
viewflipper = (ViewFlipper) findViewById(R.id.viewFlipper1);
部分xml文件:
...
<LinearLayout
android:id="@+id/LinearLayout3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center_vertical" >
<ViewFlipper
android:id="@+id/viewFlipper1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/cardview_nobuttons"
android:id="@+id/cardviewNobuttons" />
<include layout="@layout/cardview_previewbuttons"
android:id="@+id/cardviewPreviewbuttons" />
<include layout="@layout/cardview_twobuttons"
android:id="@+id/cardviewTwobuttons" />
</ViewFlipper>
</LinearLayout>
部分片段文件:
...
@Override
public void onClick(View v) {
...
dismiss();
getActivity().viewflipper.setDisplayedChild(viewflipper.indexOfChild
(findViewById(R.id.cardviewNobuttons)));
}
答案 0 :(得分:1)
我强烈建议你反对这种做法。片段不应该直接与其托管活动进行通信。有一个官方指南正在谈论如何处理这个问题Communicating with the Activity
另外,我建议你看看EventBus模式,这可以使这种沟通更容易。有两种专门针对Android的流行实现: