同じアクティビティに 2 つのフラグメントが並んでいます。右側のフラグメント (フラグメント B) のボタンをタッチすると、左側のフラグメント (フラグメント A) の TextView を更新する必要があります。これを行うための最良の方法を探しましたが、私のニーズに合ったものは何もないようです。誰かがこれをどのようにコーディングするかの例を教えてもらえますか? フラグメント A は XML レイアウトを介して設定され、フラグメント B はプログラムによってコンテナーに読み込まれます。フラグメント A のメソッドを使用してテキストを更新し、親アクティビティのメソッドからそのメソッドを呼び出すことで、これを達成しようとしました。次に、フラグメント B から親アクティビティのメソッドを呼び出します。
これは、インターフェイスを宣言し、インターフェイスのメソッドを呼び出すフラグメント B のコードです。
AttackCards attackCards;
public interface AttackCards {
public void deckSize();
}
public void onAttach(DeckBuilder deckBuilder) {
super.onAttach(deckBuilder);
attackCards = (AttackCards) deckBuilder;
}
attackCards.deckSize(); //this is in my onclick methods
これは、インターフェイスを実装し、フラグメント A のメソッドを呼び出すアクティビティのコードです。
public class DeckBuilder extends Activity implements AttackCards{
public void deckSize() {
DeckBuilderFragment deckBuilderFragment = (DeckBuilderFragment)getFragmentManager().
findFragmentById(R.id.deckbuilder_fragment);
deckBuilderFragment.deckSize();
}
これは、テキストビューに共有設定値の内容を追加するフラグメント A のメソッドです。
public void deckSize() {
deckSize = (TextView) getView().findViewById(R.id.decksize);
final SharedPreferences defaultDeck = getActivity()
.getSharedPreferences("defaultDeck", Context.MODE_PRIVATE);
deckSize.setText(String.valueOf(defaultDeck.getInt("decksize", 0)));
}
悲しいことに、この試みは、ボタンに触れると単に nullpointer をもたらします。でヌルポインターを取得しています
attackCards.deckSize(); //this is in my onclick methods
これを正しく行う方法の例を教えてください。