В последнее время я застрял! У меня есть одно действие (не моя MainActivity, я имею в виду, это не то место, где я создал этот фрагмент), и мне нужно передать некоторые данные. Я уже пытался перейти с помощью Bundle, используя getter, но появляется та же проблема: «Попытка вызвать виртуальный метод {...} для нулевого объекта». на линии, где я называю Бандл во фрагменте. Я новичок в этом, так что извините, если это простой вопрос, и я не понял. Ниже приведены соответствующие части моего кода:
В действии (не в основной деятельности):
public void save(){
myGoal = spinnerGoals.getSelectedItem().toString();
Bundle bundle = new Bundle();
bundle.putString("goal", myGoal);
GoalFragment goalFragment = new GoalFragment();
goalFragment.setArguments(bundle);
}
Во фрагменте (где я хочу поместить это 'goal')
private TextView goal;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate( R.layout.fragment_goal, container, false);
goal = view.findViewById(R.id.myGoalText);
Bundle bundle = getArguments();
if (bundle != null) {
final String myGoal = bundle.getString("goal");
goal.setText(myGoal);
}
return view;
}
На MainActivity (где я создал фрагменты):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
bottomNav.setOnNavigationItemSelectedListener(navListener);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment() )
.commit();
}
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.nav_home:
selectedFragment = new HomeFragment();
break;
case R.id.nav_goal:
selectedFragment = new GoalFragment();
break;
case R.id.nav_info:
selectedFragment = new InfoFragment();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, selectedFragment)
.commit();
return true;
}
};
Пожалуйста, я потерял много времени, пытаясь решить это самостоятельно, хахаха. Если кто-нибудь может мне помочь, я был бы признателен за это!