簡體   English   中英

將數據發送到android中另一個活動的片段

[英]send data to fragment from another activity in android

我有一個活動,它是幾個片段的容器。 片段之一開始另一個活動,從第二個活動開始,我想向其中一個片段發送一些數據。 我怎樣才能做到這一點? 基本上,第一個活動停留在第二個活動之后,並且當第二個活動關閉時,其中一個EditView將使用新值進行更新。 我本可以使用意圖,但是如果活動已經開始,該如何發送? 謝謝。

如果要將數據從片段傳遞回其包含的活動,可以通過聲明接口處理程序並通過該接口傳遞數據來實現。 並確保您的包含活動實現了這些接口。

例如:在您的片段中,如下聲明此接口:

 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);
  }

您將需要使用startActivityForResult()開始第二個活動。 在完成第二個活動之前,您需要將數據添加到捆綁中,然后將其傳遞給意圖,然后將結果設置為意圖。

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");
}

我不確定它是否像記住我的腦袋一樣完全正確,但是我認為它應該足以使您入門。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM