Java 使用SectionStatPageAdapter和bundle将数据从活动发送到多个片段
我有一个活动,我想从中向多个片段发送相同的数据。用户导航到活动后,单击按钮打开下一个片段时,将访问3个片段 这就是我想要的: 用户打开“活动”,其中包含一些数据-->用户获取到第一个片段,该片段应从“活动”中获取数据-->用户获取到第二个片段,该片段还应包含“活动”中的数据等 我尝试使用Bundle方法,但在尝试检索数据时出现了NullPointerException 以下是我的活动:Java 使用SectionStatPageAdapter和bundle将数据从活动发送到多个片段,java,android,android-fragments,bundle,Java,Android,Android Fragments,Bundle,我有一个活动,我想从中向多个片段发送相同的数据。用户导航到活动后,单击按钮打开下一个片段时,将访问3个片段 这就是我想要的: 用户打开“活动”,其中包含一些数据-->用户获取到第一个片段,该片段应从“活动”中获取数据-->用户获取到第二个片段,该片段还应包含“活动”中的数据等 我尝试使用Bundle方法,但在尝试检索数据时出现了NullPointerException 以下是我的活动: public class GameActivity extends AppCompatActivity {
public class GameActivity extends AppCompatActivity {
private SectionsStatePagerAdapter mSectionsStatePagerAdapter;
LockableViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_container);
Intent intent = getIntent();
String usernamePlayer2 = intent.getStringExtra("username player 2");
String uidPlayer2 = intent.getStringExtra("uid player 2");
Bundle bundle = new Bundle();
bundle.putString("username player 2", usernamePlayer2);
bundle.putString("uid player 2", uidPlayer2);
FragmentCategory fragobj = new FragmentCategory();
fragobj.setArguments(bundle);
mSectionsStatePagerAdapter = new SectionsStatePagerAdapter(getSupportFragmentManager());
viewPager = findViewById(R.id.container);
}
// ViewPager for the fragments
private void setupViewPager(ViewPager viewPager){
SectionsStatePagerAdapter adapter = new SectionsStatePagerAdapter(getSupportFragmentManager());
adapter.addFragment(new FragmentCategory(), "FragmentCategory1"); // 0
adapter.addFragment(new FragmentQuestion1(), "FragmentQuestion1"); // 1
adapter.addFragment(new FragmentAnswer1(), "FragmentAnswer1"); // 2
viewPager.setAdapter(adapter);
}
public void setViewPager(int fragmentNumber){
viewPager.setCurrentItem(fragmentNumber);
}
这是我关于NullpointerException的第一个片段:
public class FragmentCategory extends Fragment {
private View btnNavFragCat1, btnNavFragCat2, btnNavFragCat3;
private TextView tvCategory1, tvCategory2, tvCategory3;
private ImageView imageCategory1, imageCategory2, imageCategory3;
private FirebaseFirestore firebaseFirestoreCategory = FirebaseFirestore.getInstance();
private CollectionReference categoryCollectionRef = firebaseFirestoreCategory.collection("Categories");
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
String usernamePlayer2 = this.getArguments().getString("username player 2");
View view = inflater.inflate(R.layout.activity_category_selection, container, false);
...
return view;
}
}
我知道,使用Bundle,我只能将活动中的数据发送到一个片段,但为什么会出现错误?是否有更好的方法将数据发送到多个片段。现在我会将它发送到第一个片段,然后从那里发送到下一个片段,等等
非常感谢你的帮助 由于您使用的是相同的数据,因此播放器,我将执行以下操作:
关于NullpointerException,我认为问题在于新片段不包含您试图提取的参数。首先删除意图键之间的空白 “用户名球员”=>“用户名球员” 其次您可以通过调用
getActivity().getIntent().getExtras().getString("username_player")
最后确保在开始活动时通过预期的意图值感谢您的帮助,这很有效。但是为什么我必须删除空白?因为它是一个标识符。指单个实体/单词而非句子的名称。