0

アプリケーション全体で再利用できる金額挿入ボックスを実装するために Android フラグメントを作成する方法を学ぼうとしています。そこで、いくつかの EditText ボックスを含む単純な xml ファイルを作成します。次に、AmountFragment.java という関連する Java ファイルを作成しました。

public class AmountFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.amount_fragment, container, false);
        return view;
    }
}

次に、このフラグメントを別の xml ファイルで使用します。

<fragment 
    android:name="com.example.android.ui.widget.AmountFragment"
    android:id="@+id/transaction_amount"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

これはこれまでのところうまくいきます。フラグメントが正常に表示され、数字を挿入できます。mainActivity に挿入されたテキストを取得できるようにしたいと考えています。Androidドキュメントのフラグメントに関するこのページを読みましたが、完全に迷っています。彼らが示すコードは、私にはまったく意味がありません。インターフェイスを定義する必要がありますが、それをどうする必要があるのか​​わかりません。単純にコピーして貼り付けようとしましたが、InflateException が発生します。何が起こっているのかわからないので、どこで解決策を探すべきかわかりません。

だから私の質問:このフラグメントを使用するアクティビティとインターフェイスする方法について、誰かが私にいくつかの指針を与えることができますか?

4

1 に答える 1

1

次のコードを試してください。

さらにMainActivity.java_

public void getMessage(Object obj) {
    Log.d("My App", "Look at my object " + obj.toString();
}

それはあなたのからオブジェクトを取得しAmountFragment、次にあなたのAmountFragment書き込みで:

String anyObject = "Yay something";
((MainActivity)getActivity()).getMessage(anyObject);

ここで起こっていることは、フラグメントを含むgetActivity()のインスタンスを取得し、Activityそれをアクティビティにキャストして、MainActivity作成したレシーバー メソッドを呼び出すことです。

于 2013-10-04T13:56:59.703 に答える