Jud*_*des 6 java android android-fragments android-activity android-fragmentactivity
如果我有一个扩展基本活动BA的活动A,那么我能够安全地从活动A访问活动BA中的任何变量.我现在使用的是包含片段F的活动A.现在从这个片段我想要以同样的方式访问A的所有变量,就像我上面所做的那样,如果没有,除了通过公共方法使其可用之外,还有一种安全的方法.
或者有没有办法可以将基本活动中的变量复制到基本片段,以便在所有活动和片段中都可用.
正如官方文档所建议的那样,实现它的一个好方法是使用接口。
为了允许 Fragment 与其 Activity 通信,您可以在 Fragment 类中定义一个接口并在 Activity 中实现它。
所以,基本上在你的片段中你定义了一个这样的接口:
public interface MyListener {
public void onAction();
}
Run Code Online (Sandbox Code Playgroud)
并定义(仍在片段中)一个类型的字段 MyListener
MyListener mCallback;
Run Code Online (Sandbox Code Playgroud)
然后您可以使用以下onAttach(Activity)
方法设置此侦听器:
mCallback = (MyListener) activity;
Run Code Online (Sandbox Code Playgroud)
现在,每次您想从片段调用活动中的方法时,您都可以使用回调:
mCallback.onAction();
Run Code Online (Sandbox Code Playgroud)
当然,您的 Activity 需要实现该接口,否则将您的 Activity 投射到 MyListener 时会出现异常。
所以,只要这样做:
public class MyActivity extends Activity implements MyFragment.MyListener {
@Override
public void onAction() {
// some stuff
}
}
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请查看有关片段之间通信的文档
如果VARIABLE_NAME
是您活动中的变量ACTIVITY_NAME
,可以从外部活动访问ACTIVITY_NAME
然后使用这段代码:
((ACTIVITY_NAME)this.getActivity()).VARIABLE_NAME //this refers to your fragment
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9576 次 |
最近记录: |