2

FragA と FragB の 2 つのフラグメントがあり、FragA から FragB に文字列を渡したいと考えています。これらの参照を使用しましたhttp://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity & http://developer.android.com/training/basics/fragments/communicating.html

次のステップについてはまだ少し混乱しています。FragA の文字列を FragB に取得するには、このコードに何をする必要がありますか? コードを投稿してください。

私はFragAに持っています:

public class FragA extends ListFragment{

    OnDataPass dataPasser;


public interface OnDataPass{
    public void onDataPass(String data);
}

@Override
public void onAttach(Activity a) {
    super.onAttach(a);

    // This makes sure that the container activity has implemented
    // the callback interface. If not, it throws an exception
    try {
        dataPasser = (OnDataPass) a;
    } catch (ClassCastException e) {
        throw new ClassCastException(a.toString()
                + " must implement OnHeadlineSelectedListener");
    }
}

...
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    String libraryList;

    //Get the position the user clicked.
    Fragment newFragment = null;

    libraryList = l.getItemAtPosition(position).toString();

    dataPasser.onDataPass(libraryList);
 ...
}

私の主な活動で私は追加しました:

public class MainActivity extends Activity implements OnDataPass{
...
    @Override
public void onDataPass(String data) {
    // TODO Auto-generated method stub

}
}

FragB:

public class FragB extends ListFragment{

TestAdapter mDbHelper;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);


    mDbHelper = new TestAdapter(getActivity());     
    mDbHelper.createDatabase();
    mDbHelper.open();

    //Get info from FragA

    //Close the database.
    mDbHelper.close();

}
}
4

1 に答える 1

0

OnDataPassでインターフェイスを実装する必要があると思いますFragB。次に、インスタンスをActivity.onDataPass見つけて を呼び出す必要があります。それが私が考える最も明確な方法です。FragBFragB.onDataPass

于 2012-09-06T01:09:57.470 に答える