![](/img/trans.png)
[英]How to pass data from Activity to Fragment with TabLayout
[英]Pass Data from Activity to Fragment in Viewpager Tablayout
我使用下面的代碼將數據從 Activity 傳遞到 Fragment。
片段代碼
public class StoryDetailFragmentInfo extends Fragment {
View view;
TextView txtDescrible;
final static String getData = "abc";
public static StoryDetailFragmentInfo newInstance(String paramater){
Bundle bundle = new Bundle();
bundle.putString(getData,"Message");
StoryDetailFragmentInfo fragmentInfo = new StoryDetailFragmentInfo();
fragmentInfo.setArguments(bundle);
return fragmentInfo;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getArguments()!=null){
String test = getArguments().getString(getData);
}
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.story_detail_fragment_info_layout, container, false);
txtDescrible = view.findViewById(R.id.txt_describleDetail);
return view;
}
}
主要活動代碼
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.story_detail_layout);
addControls();
loadData();
intentData();
fillDataToView();
}
private void intentData() {
StoryDetailFragmentInfo.newInstance("Hello babe");
}
問題是我的片段中的getArgument()
為null
,我無法獲取數據我該怎么辦?
你能幫我解釋一下嗎? 謝謝閱讀。
如果要將數據從活動傳遞到片段作為初始數據,可以將數據從活動發送到 ViewPagerAdapter,然后在 getItem() 函數中將數據從 ViewPagerAdapter 傳遞到片段。 在活動中:
adapter = new ViewPagerAdapter(getSupportFragmentManager(), this,false)); 適配器.setData(數據);
在 ViewPagerAdapter 中:
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
MyFragment fragment = new MyFragment();
fragment.setData(data);
return fragment
}
}
首先,在類StoryDetailFragmentInfo
newInstance
方法中,你寫這些: bundle.putString(getData,"Message");
而不要管paramater
。 所以你需要改變
bundle.putString(getData,"Message");
到
bundle.putString(getData,paramater);
其次,您嘗試通過鍵“AdapterStoryDetailViewPager.idData”從片段的參數中獲取值,但此鍵與您用於保存值的鍵不同。 所以你需要改變
String test = getArguments().getString(AdapterStoryDetailViewPager.idData);
到
String test = getArguments().getString(getData);
經過這兩個步驟,您將獲得正確的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.