這是片段之間正確的通信方式嗎?片段之間正確的通信方式
public class MainActivity extends AppCompatActivity implements IFragmentsHandler {
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
}
@Override
protected void startFragment1() {
Fragment1 f1 = new Fragment1();
f1.setFragmentsHandler(this);
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, f1)
.commit();
}
@Override
protected void startFramgment2() {
Fragment1 f2 = new Fragment1();
f2.setFragmentsHandler(this);
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, f2)
.commit();
}
}
public class Fragment1 {
private IFragmentsHadnler fragmentsHandler;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment1, container, false);
//...Code...
fragmentsHandler.startFragment1();
}
public void setFragmentsHandler(IFragmentsHandler fragmentsHandler) {
this.fragmentsHandler = fragmentsHandler;
}
}
public class Fragment2 {
private IFragmentsHadnler fragmentsHandler;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment2, container, false);
//...Code...
fragmentsHandler.startFragment2();
}
public void setFragmentsHandler(IFragmentsHandler fragmentsHandler) {
this.fragmentsHandler = fragmentsHandler;
}
}
[EDIT1]:發佈接口(雖然很明顯)
public interface IFragmentsHandler {
public void startFragment1();
public void startFragment2();
}
從我的Java角度來看,這將引發OutOfMemoryE rror,但我不是,如果它是相同的Android。無論如何,片段之間的首選溝通方式是什麼?
正是你的通信是什麼意思? 而且,你如何重寫AppCompatActivity中的'protected void startFragment1()'方法? –
@ArunElectra好吧,我也將添加接口。通過溝通我的意思是從Fragment1開始Fragment2。 – JAAAY
你想用fragment2替換fragment1並從fragment1啓動替換? –