问题 在FragmentActivity中,如何访问对Fragment或AppCompatActivity的引用?
场景 我的应用程序具有允许在片段之间切换的选项卡。每个选项卡都有一个按钮,可转换为只能从该选项卡访问(单击后)的视图。
public class MainActivity extends AppCompatActivity{
private class (on)SectionPageAdapter extends FragmentPageAdataper{
...
@Override public Fragment getItem(int position){
...
F1 f1 = new F1();
return f1;
}
}
}
public class F1 extends Fragment{
...
void onIntent(){
...
Intent intent = new Intent(this.getActivity(), AccountTransition.class);
this.startActivity(intent);
}
}
public class F2 extends FragmentActivity{
//how can i gain access to a reference from F1 class or MainActivity class?
}
答案 0 :(得分:1)
您不应尝试获取对Activity
的引用,这可能会导致内存泄漏并使代码更脆弱。
您应该研究Activities
之间的通信方式,例如使用BroadcastReceiver
或EventBus
。
https://developer.android.com/reference/android/content/BroadcastReceiver
如果您想简单一些,我建议使用EventBus
。
https://github.com/greenrobot/EventBus
这是一个简单的示例,说明如何使用Activities
在两个EventBus
之间发送数据而无需任何引用。
MainActivity.java
public class MainActivity extends AppCompatActivity{
@Subscribe()
public void onMessageEvent(MessageEvent event) {
// Show the message.
}
}
F2.java
public class F2 extends FragmentActivity{
// Sending "Hello from F2" to anyone listening.
public void sendMessage() {
MessageEvent event = new MessageEvent("Hello from F2");
EventBus.getDefault().post(event);
}
}