2つのフラグメント間の基本的な通信
2023-09-16 06:21:08
質問
私は1つのアクティビティ
MainActivity
. このアクティビティには2つのフラグメントがあり、両方ともxml内で宣言的に作成されました。
を渡そうとしています。
String
に入力されたテキストを
Fragment A
のテキストビューに
Fragment B
. しかし、これは非常に困難であることが判明しています。どなたか、これを実現する方法をご存知でしょうか?
私は、フラグメントが、そのアクティビティへの参照を
getActivity()
. だから、私はそこから始めると思います?
どのように解決するのですか?
Androidの開発者向けページを見てください。 http://developer.android.com/training/basics/fragments/communicating.html#DefineInterface
基本的には、フラグメントAでインターフェースを定義し、Activityにそのインターフェースを実装させます。フラグメントの中でインターフェースのメソッドを呼び出すと、アクティビティがイベントを受け取ります。アクティビティでは、2番目のフラグメントを呼び出して、受け取った値でtextviewを更新することができます。
あなたのActivityはあなたのインターフェースを実装しています(下記FragmentA参照)
public class YourActivity implements FragmentA.TextClicked{
@Override
public void sendText(String text){
// Get Fragment B
FraB frag = (FragB)
getSupportFragmentManager().findFragmentById(R.id.fragment_b);
frag.updateText(text);
}
}
フラグメントAはインターフェースを定義し、必要なときにメソッドを呼び出します。
public class FragA extends Fragment{
TextClicked mCallback;
public interface TextClicked{
public void sendText(String text);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (TextClicked) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement TextClicked");
}
}
public void someMethod(){
mCallback.sendText("YOUR TEXT");
}
@Override
public void onDetach() {
mCallback = null; // => avoid leaking, thanks @Deepscorn
super.onDetach();
}
}
フラグメントBは、テキストに対して何かを行うためのパブリックメソッドを持っています。
public class FragB extends Fragment{
public void updateText(String text){
// Here you have it
}
}
関連
-
[解決済み] 親アクティビティからFragmentのメソッドを呼び出す
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] FragmentのsetRetainInstance(boolean)を理解する。
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み】フラグメント内のXML onClickを使用して、ボタンのクリックを処理する方法
-
[解決済み] 異なるフラグメント/レイアウトを持つViewPagerを実装する方法
-
[解決済み] HttpPostによる画像送信
-
[解決済み] アプリ内課金テスト:android.test.purchased already owned
-
[解決済み] TabLayoutに対応したandroidデザインでタブテキストのフォントを変更する
-
[解決済み] バックスタックからのレジューム時のフラグメント
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ViewPager PagerAdapter がビューを更新しない
-
[解決済み] BottomSheetDialogFragmentの状態をexpandedに設定する。
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] 文字サイズとアンドロイドの画面サイズの違い
-
[解決済み] サポートライブラリのアクションバーをPreferenceActivityに追加するには?
-
[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?
-
[解決済み] アンドロイドボタンセレクター
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?