アクティビティからフラグメントにデータを送信しようとしています。フラグメントからアクティビティにデータを送信していません。アクティビティでインターフェイスリスナーオブジェクトをインスタンス化する以外は、すべて正しく設定されています。
public class Activity extends AppCompatActivity {
private FragmentInterface fragmentInterfaceListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// This line below is actually in a button onClick()
fragmentInterfaceListener.sendDataMethod(dataToSend);
}
public interface FragmentInterface {
void sendDataMethod(SampleData sampleData);
}
}
次に、フラグメントには、次のものがあります。
public static class CustomFragment extends Fragment implements Activity.FragmentInterface {
@Override
public void sendDataMethod(final SampleData sampleData) {
}
}
ボタンにログ行を入れるとonClick()
、ボタンをクリックするとログ行が表示されます。いいえ、sampleDataをフラグメントバンドルに入れるつもりはありません。はい、インターフェースを介してデータを送信する必要があります。では、アクティビティでfragmentInterfaceListenerオブジェクトを正しくインスタンス化するにはどうすればよいですか?ActivityまたはCustomFragmentに他に何か足りないものはありますか?
ここで欠けているのは登録部分です。
フラグメントは、イベントが発生したときにデータを送信するために、アクティビティのアクティビティリスナーに自身を登録する必要があります。これを行うには、アクティビティにメソッドを作成します。
private void setOnDataListener(FragmentInterface interface){
fragmentInterfaceListener=interface;
}
そして、フラグメントのoncreateで、リスナーを次のように設定します
((YOUR_ACTIVITY_NAME)getActivity()).setOnDataListener(this);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加