2012-12-18 45 views
0

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

+0

如果你想返回一些數據,結果,你可以用'startActivityForResult'開始第二個'Activity'。 – Luksprog

回答

2

您需要使用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"); 
} 

我不知道如果我有它完全正確的記住它在我頭頂,但應該足以讓你開始我的想法。

+0

謝謝你Boardy。我已經從該片段調用了getActivity()。startActivityForResult(),它工作。 –

+0

但捆綁不接受putextra! intent.putExtra(intent)是什麼意思; ? –

+0

這應該是「intent.putExtra(bundle)」。我已經糾正了答案 – Boardy

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

這不是他想要的 – nadav

相關問題