0

いくつかのフラグメントのコンテナであるアクティビティがあります。フラグメントの1つが別のアクティビティを開始し、2番目のアクティビティからフラグメントの1つにデータを送信します。どうやってやるの?基本的に、最初のアクティビティは2番目のアクティビティを超えたままであり、2番目のアクティビティが閉じるとEditViewの1つが新しい値で更新されます。インテントを使用することもできましたが、アクティビティがすでに開始されている場合、どうすれば送信できますか?ありがとうございました。

4

2 に答える 2

2

を使用して2番目のアクティビティを開始する必要がありますstartActivityForResult()。終了する前の2番目のアクティビティでは、データをバンドルに追加して、これをインテントに渡し、結果をインテントに設定する必要があります。

Bundle bundle = new Bundle();
bundle.putString("myData", "myValue");
Intent intent = new Intent();
intent.putExtra(bundle);
setResult(intent, 0);
finish();

そして、アクティビティ1にはonactivityresult、インテントから値を取得し、フラグメント内の必要な場所に設定するメソッドが必要です。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bundle bundle = data.getData();
string value = bundle.getString("myData");
}

頭のてっぺんに覚えているのとまったく同じかどうかはわかりませんが、始めるには十分なはずです。

于 2012-12-18T17:03:54.073 に答える
2

フラグメントから含まれているアクティビティにデータを戻したい場合は、インターフェイスハンドラーを宣言し、そのインターフェイスを介してデータを渡すことでデータを渡すことができます。そして、包含アクティビティがそれらのインターフェースを実装していることを確認してください。

例:フラグメントで、このインターフェースを次のように宣言します。

 public interface CallBackInterface {
      public void onCallBack(String param);
 }

 //Declare this interface in your fragment
 CallBackInterface callBk;

 @Override
 public void onAttach(Activity a) {
     super.onAttach(a);
     callBk= (CallBackInterface ) a;
 } 

フラグメント内で、データの受け渡しを処理する必要がある場合は、「callBk」オブジェクトで呼び出すだけです。

 public void  callBack(String param) {
     callBk.onCallBack(param);
 }

最後に、CallBackInterfaceを実装する包含アクティビティで...

  @Override
  public void onCallBack(String param) {
       Log.d("TAG","hi " + param);
  }
于 2012-12-18T16:59:49.190 に答える