lan*_*ith 4 android android-fragments
我正在尝试将数据从活动发送到片段.我不是将数据从片段发送到活动.除了在活动中实例化接口侦听器对象之外,我已经正确设置了所有内容.
public class Activity extends AppCompatActivity {
private FragmentInterface fragmentInterfaceListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// This line below is actually in a button onClick()
fragmentInterfaceListener.sendDataMethod(dataToSend);
}
public interface FragmentInterface {
void sendDataMethod(SampleData sampleData);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在片段中,我有:
public static class CustomFragment extends Fragment implements Activity.FragmentInterface {
@Override
public void sendDataMethod(final SampleData sampleData) {
}
}
Run Code Online (Sandbox Code Playgroud)
当我在按钮中放置一条日志行时,onClick()单击该按钮时会出现日志行.不,我不打算将sampleData放在片段包中.是的,我需要通过接口发送数据.那么如何在Activity中正确实例化fragmentInterfaceListener对象呢?我在Activity或CustomFragment中缺少其他任何内容吗?
你在这里缺少的是注册部分.
片段必须向活动监听器注册自己,以便在事件发生时发送数据.为此,在活动中创建一个方法
private void setOnDataListener(FragmentInterface interface){
fragmentInterfaceListener=interface;
}
Run Code Online (Sandbox Code Playgroud)
在你的片段的oncreate中设置这样的监听器
((YOUR_ACTIVITY_NAME)getActivity()).setOnDataListener(this);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4244 次 |
| 最近记录: |