フラグメント間の適切な通信方法ですか?フラグメント間の適切な通信方法
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をスローします私はそれがAndroidの場合と同じではないです。とにかく、断片間のコミュニケーションの好ましい方法は何ですか?コンポーネント間で通信するために
? そして、AppCompatActivityで 'protected void startFragment1()'メソッドをどのようにオーバーライドしていますか? –
@ArunElectraいいえインターフェイスを追加します。コミュニケーションとは、断片1から断片2を始めることを意味します。 – JAAAY
あなたはfragment1をfragment2に置き換えて、fragment1からの置換を開始したいですか? –