让活动知道片段何时完成操作

时间:2013-07-16 16:01:38

标签: android android-fragments android-activity listener

我有两个片段的活动。

片段A在onResume()期间执行复杂操作,片段B需要片段A完成复杂操作,否则用户与片段B的交互将导致崩溃。

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

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

在片段A中,我确实设置了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");
    }
}

但现在,谢谢。

3 个答案:

答案 0 :(得分:1)

根据Android Developer here的建议,我建议您不要将片段连接起来,并通过活动类使用回调。

答案 1 :(得分: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
}

答案 2 :(得分: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
   }
  }