私は1つのアクティビティと3つのフラグメントを持っています。アプリケーションが起動し、フラグメント1が表示されます。私はボタンをクリックします。フラグメントは、以下のインタフェースを介しての活動と通信し、フラグメント2起動:複数のフラグメントを1つのインターフェイスで管理する
public OnClickedListener listener;
static interface OnClickedListener{
public void buttonClicked(View v);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
Activity a;
if (context instanceof Activity){
a=(Activity) context;
this.listener = (OnClickedListener)a;
}
}
を...
playBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.buttonClicked(v); } });
マイMainActivityがFragment1.OnClickedListenerを実装し、データを受信して、起動断片2
今私はフラグメント2になっています。ボタンをクリックしてフラグメント3を起動したいと思います。フラグメント2にもう1つのインターフェイスを実装して、それを実行することができます「Hey Launch Fragment 3」と言ってください。だから今私の活動は、すべての罰金ですが、のは、私は20個の断片を持っているとしましょう。この
MainActivity implements Fragment1.OnClickedListener,Fragment2.OnClickedListener
のように見えます。主な活動では20のインターフェースを実装したくありません。単一のインタフェースを作成して使用して、個々のフラグメントとアクティビティの間で通信する方法はありますか?それはどのように実装されますか?ありがとうございました。
私は少し混乱しています。 OnClickedListenerという別のインターフェイスを作成しました。私はこれをFragment1で拡張し、ボタンがクリックされたときにデータを取得できるようになりました:listener.buttonClicked(MyFragmentClassName.this、v);私は今それを私の主な活動にどのようにしていますか?上記のように、私の主な活動は次のようになるはずです:public class MainActivity extends Activity MainActivity.OnClickedListenerを実装しています。ここであなたが実装しているものがわからないのですか? –
@mikhailは言ったように、インターフェイスを別のファイルに宣言するか、MainActivityにネストします。 –