因此,在我的android应用程序中,我使用菜单和片段,在用户登录后,我希望能够将用户名例如从登录活动传递到我的所有其他片段,我尝试了一些解决方案,但似乎没有一个工作,以下是我迄今为止所做的:
在我的LoginActivity中,我可以像这样传递用户名:
final Bundle bundle = new Bundle();
bundle.putString("username", username.getText().toString());
在我的MenuActivity中,我这样做是为了从LoginActivity获取数据:
Intent intent = getIntent();
if (intent != null) {
if (intent.hasExtra("username")) {
username = intent.getStringExtra("username");
}
}
而这个把数据传递给我的不同片段:
final Bundle bundle = new Bundle();
bundle.putString("username", username);
bottomNavigationView.setOnItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment = null;
switch (item.getItemId()) {
case R.id.home:
fragment = new HomeFragment();
fragment.setArguments(bundle);
break;
case R.id.todo:
fragment = new ToDoFragment();
fragment.setArguments(bundle);
break;
case R.id.schedule:
fragment = new ScheduleFragment();
fragment.setArguments(bundle);
break;
case R.id.courses:
fragment = new CoursesFragment();
fragment.setArguments(bundle);
break;
case R.id.profile:
fragment = new ProfileFragment();
fragment.setArguments(bundle);
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment, "usernameTag").commit();
return true;
}
});
最后,在我的HomeFragment中:
if(getArguments() != null) {
username = getArguments().getString("username");
}
但它似乎不起作用,我可以将数据从Activity传递到另一个Activity或另一个片段,但在使用菜单时它不想工作,每当我想在任何片段中使用“username”时,我总是得到NullPointerException,因为它是空的。有人知道我在这里做错了什么吗?
1条答案
按热度按时间yiytaume1#
为了在活动之间传递值,您可以使用Intents来传递数据,而不是bundle
将值从活动传递到片段
然后在片段**onCreateView()**类中