0

私はFragmentsAndroidで複数のアプリを使用していますが、組み込みアプリとの間でデータを送受信する方法について混乱しています。

簡単な説明として、ここで説明した方法を使用したaListFragmentとaがあります。これは、クラスに住んでいることを意味しますが、はの下で呼び出されます。 MapFragmentListListFragmentMapActivityActivityLocalActivityManagerFragment

すべてが個々に機能しますFragmentsListsに実装されているウェイポイント、ウェイポイント、現在の場所MapFragmentgetFragmentManager()また、個人を取得してイベントを使用する方法も理解しFragmentsています。ただし、このメソッドを使用して、の下の関数にアクセスすることはできませんMapActivity。の項目をクリックした場合、単純に使用できない場合、goToLocation(の下に作成された)などのコマンドを使用するにはどうすればよいですか?MapActivityListViewgetFragmentManager

4

1 に答える 1

1

フラグメントとアクティビティ間の通信の場合:

アクティビティ > フラグメント:

これを使用してフラグメントのパブリック メソッドを呼び出します。

TestFragment testFrag = (TestFragment) getFragmentManager().getFragmentById(R.id.testfragment);

if(testFrag != null && testFrag.isAdded())
    testFrag.testMethod("Test");

フラグメント > アクティビティ

アクティビティにメッセージを送信するには、インターフェイスを使用する必要があるため、フラグメント クラスでこれを追加します: (どのメソッドにもありません)

public interface testInterface{
    public void testMethod(String test);
}

testInterface mCallback;

@Override
public void onAttact(Activity a){
    try{
        mCallback = (testInterface) a;
    }catch(Exception e){
        //TODO
    }
}

次に、任意のメソッドでこれを呼び出すことができます:

mCallback.testMethod("hello");

次に、アクティビティのためにそれを作成しimplements testInterface、インターフェイスをインポートします

次に、このメソッドをアクティビティに含めます

@Override
public void testMethod(String testString){

}

:) 何でも聞いてください。


編集

あなたの質問を最初に読んだときから、これがあなたが望んでいたことだと思いました。

あなたが求めているのはonItemClickメソッドだけだと思いますよね?

だからあなたが持つことができるインターフェースで

public void onItemClicked(AdapterView<?> parent, View view, int position, long id);

次に、フラグメントで onItemClick が呼び出されたときに、これを使用できます

mCallback.onItemClicked(parent, view, position, id);

そして、アクティビティで、あなたが持つことができるインターフェースを実装していることを考えると

@Override
public void onItemClicked(AdapterView<?> parent, View view, int position, long id){

}
于 2012-07-18T22:07:11.543 に答える