0

我有两个片段的活动。

Fragment A 在 onResume() 期间做了一个复杂的操作,而 Fragment B 需要 Fragment A 完成复杂的操作,否则用户与 Fragment B 的交互会导致崩溃。

我想在这个活动中放置一个进度条旋转对象,直到片段 A 完成,然后并排显示片段 A 和片段 B 的布局。

但我不确定如何将 Fragment A 的 onResume 的完成暴露给活动。

在 Fragment AI 中确实有一个fragmentlistener设置

public void onAttach(final Activity activity) {
    super.onAttach(activity);
    try {
        this.mListener = (TopicListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.getClass().getName()
                + " must implement TopicListener");
    }
}

但是现在呢,谢谢。

4

3 回答 3

1

正如 Android Developer here所建议的那样,我建议您不要耦合片段并通过您的活动类使用回调。

于 2013-07-16T16:05:48.367 回答
0

使用您的回调将您发送到活动。

将回调与地图片段一起使用的示例

private MapListeners mLocation;

public interface MapListeners{
    public void onMarkerClick(Marker m);
    public void onLocationChanged(Location location);
}

@Override
public void onAttach(Activity activity){
    super.onAttach(activity);
    try{
        mLocation = (MapListeners)activity;
    }catch(ClassCastException e){
        throw new ClassCastException(activity.toString() + " must implement OnMarkerClick and OnLocationChanged");
    }
}

public boolean onMarkerClick(Marker marker) {
//marker is clicked so send a call to the activity like this
    mLocation.onMarkerClick(marker);
    return true;
}

在活动中确保你实现了接口,在这种情况下它将是MapListeners

然后当单击标记时,onMarkerClick您创建的方法被调用

public void onMarkerClick(Marker m) {

    //do something
}
于 2013-07-17T13:40:28.783 回答
0

做这个:

public class MyFragmentOne extends Fragment{ 
 @Override 
 onResume()
 {
   //Do the complex task
     ((MyActivity)getActivity()).fragmentTaskCompleted();
  }
 }


 public class MyActivity extends Activity
 {
  public void fragmentTaskCompleted()
  {
    //Show second fragment
   }
  }
于 2013-07-17T13:48:02.280 回答