2016-07-01 16 views
2

我更多使用Google搜索來查找如何將簡單的view作爲對象傳遞給fragment,但我不能。Android傳遞查看作爲對象的片段

例如在MainActivity我有簡單視圖:

TextView text = (TextView) findviewById(R.id.tv_text); 

現在我想傳遞到片段。這下面的代碼是我附上片段上MainActivity

MainActivity

public void attachFragment() { 
    fts = getActivity().getFragmentManager().beginTransaction(); 
    mFragment = new FragmentMarketDetail(); 
    fts.replace(R.id.cardsLine, mFragment, "FragmentMarketDetail"); 
    fts.commit(); 
} 

,這是我Fragment

public class FragmentMarketDetail extends Fragment implements ObservableScrollViewCallbacks { 
    public static final String SCROLLVIEW_STATE = "scrollviewState"; 
    private ObservableScrollView scrollViewTest; 
    private Context context; 
    private int scrollY; 

    public static FragmentMarketDetail newInstance() { 
     FragmentMarketDetail fragmentFirst = new FragmentMarketDetail(); 
     return fragmentFirst; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_online_categories, container, false); 
     scrollViewTest = (ObservableScrollView) view.findViewById(R.id.scrollViewTest); 
     scrollViewTest.setScrollViewCallbacks(this); 
     return view; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     context = getActivity().getBaseContext(); 
    } 
} 

回答

1

如何在自定義片段 例如增加一組功能

public void setTextView(TextView tv){ 
    this.tv = tv 
} 

然後

mFragment = new FragmentMarketDetail(); 
mFragment.setTextView(textView) 
後調用它
1

查找片段的標籤並在其上調用一個函數:

mFragment = (FragmentMarketDetail) getActivity().getFragmentManager().findFragmentByTag(FragmentMarketDetail .class.getSimpleName()); 
mFragment.passTextView(textView); 

當然,片段必須添加到backstack。

3

以這種方式傳遞視圖不是一種好習慣。如果您想從片段類中訪問活動中的視圖,請使用getActivity()訪問您的片段附加到的活動,然後從中找到您的TextView。

TextView text = (TextView) getActivity().findViewById(R.id.tv_text);