2015-11-15 64 views
0

我想將可變數據傳回給片段的包含活動,但它似乎並沒有工作。將數據從片段傳遞到其容器活動不起作用。有任何想法嗎?

在該片段中,我有:

public class MainActivityFragment extends Fragment { 

    public String profile_id; 
    OnPassIdListener onPassIdListener; 

    private FacebookCallback<LoginResult> mCallback = new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

      ... 

     } 

      onPassIdListener.passId(profile_id); 

     } 

    public void onAttach(Context context) { 
     super.onAttach(context); 

     try { 
      onPassIdListener = (OnPassIdListener) context; 
     } catch (Exception ex) { 

     } 
    } 

    public interface OnPassIdListener { 
     void passId(String id); 
    } 

在集裝箱活動我:

@Override 
public void passId(String id) { 

    TextView textview = (TextView) findViewById(R.id.prof_id_test); 
    textview.setText(id); 

} 

然而,當textview.setText被調用時,它被設置爲null。 ..這意味着變量是空的。

此外,我已經檢查過,變量實際上包含數據之前,它被傳遞給活動,它這樣做,它必須是與我傳遞它的方式。

任何想法?預先感謝任何提示。

+1

請張貼的代碼,你實際上是在你的片段致電onPassIdListener.passId(PROFILE_ID)。 –

+0

你需要在onCreateView裏面創建視圖... –

+0

@MarianoZorrilla你是什麼意思? – Charlieabee

回答

0

你可以得到附加的活動調用它像

ContainerActivity activity = (ContainerActivity) getActivity(); 

然後只需用他們的方法

activity.passId(""); 
+0

這將如何解決我的問題? @juicy_cesar – Charlieabee

+1

這會起作用,但@charlie接近於使用接口,這是首選和推薦的實現。 –