Mar*_*k F 2 android android-fragments
有人可以告诉我,如果我正确解决这个问题,或者我应该走另一条路线吗?
这是一个简化的例子:我有1个Activity和2个Fragments.每个片段都有一个按钮,单击该按钮,将单击转发回活动,并在活动中弹出一个Toast.
我知道Fragment通过接口与Activity通信.但是如果我有多个具有类似接口的片段呢?例如,这里两个Fragments都使用onClick类型的接口与Activity通信
static interface OnClickedListener{
public void buttonClicked(View v);
}
Run Code Online (Sandbox Code Playgroud)
是不是更好
A)创建一个单独的Interface类并将其附加到两个Fragments中.例如片段1:
public class Fragment1 extends Fragment implements OnClickedListener{
private OnClickedListener clickedInterface;
public Fragment1() {
// Required empty public constructor
}
@Override
public void buttonClicked(View v) {
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.clickedInterface = (OnClickedListener)activity;
}}
Run Code Online (Sandbox Code Playgroud)
片段2:
public class Fragment2 extends Fragment implements OnClickedListener{
private OnClickedListener clickedInterface;
public Fragment2() {
// Required empty public constructor
}
@Override
public void buttonClicked(View v) {
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.clickedInterface = (OnClickedListener)activity;
}
Run Code Online (Sandbox Code Playgroud)
要么
B)创建特定片段独有的各个接口,并在MainActivity中实现那些接口,而不是如上所述的一个接口.谢谢.
首先创建实现界面中的自定义片段.
public class CustomFragment extends Fragment implements OnClickedListener{
public OnClickedListener clickedInterface;
@Override
public void buttonClicked(View v) {
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.clickedInterface = (OnClickedListener)activity;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以添加每个片段
(i)片段1
public class Fragment1 extends CustomFragment {
......
}
Run Code Online (Sandbox Code Playgroud)
(ii)片段2
public class Fragment2 extends CustomFragment {
......
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1063 次 |
| 最近记录: |