1

如果我有一個活動A擴展了基本活動BA,那麼我可以安全地從活動A訪問活動BA中的任何變量。現在我正在使用的是包含活動A,其中包含片段F 現在從這個片段中,我想以同樣的方式訪問A的所有變量,就像我在上面做的那樣,如果不是,那麼除了通過公共方法提供它之外,還有一個安全的方法。片段中的訪問活動變量

或者有沒有一種方法可以將基本活動中的變量複製到基本片段,以便在所有活動和片段中都可用。

+3

你應該張貼您的代碼爲更好地理解 –

+0

之間的通信一直在尋找同樣 –

+0

HTTP:/ /stackoverflow.com/questions/12364434/android-how-can-fragment-take-a-global-variable-of-activity –

回答

0

如果VARIABLE_NAME是在你的活動A一個變量,可以從外面的活動進行訪問A

然後使用此代碼:

((A)this.getActivity()).VARIABLE_NAME //this refers to your fragment 
3

的一個好辦法實現它使用一個接口,官方文件建議。

要允許片段最多傳達到它的活動,您可以定義 片段中的類的接口和 活動中實現它。

所以,基本上你的片段裏,你定義一個接口是這樣的:

public interface MyListener { 
    public void onAction(); 
} 

,並(在片段仍然)定義類型的字段MyListener

MyListener mCallback; 

然後你可以設置此聽衆使用onAttach(Activity)方法:

mCallback = (MyListener) activity; 
現在

,你想每次再從片段中調用活性的方法,你可以使用回調:

mCallback.onAction(); 

當然,你的活動需要實現的接口,否則施法時,你會得到一個異常的活動給MyListener。

所以,只是做:

public class MyActivity extends Activity implements MyFragment.MyListener { 
    @Override 
    public void onAction() { 
     // some stuff 
    } 
} 

瞭解更多詳細看看documentation大約片段

+0

我上面試過,但在這種情況下(即OP的情況下),它沒用......因爲最後你必須在Activity中使用getter方法,所以不需要實現這個接口類型層次結構。當您希望跨片段訪問/發送值,即從一個片段到另一個片段時,您的示例實際上非常有用 –