Передаю данные из фаргмента в активити. При попытке открыть фрагмент ошибка о вызове виртуального метода. Подскажите, где я мог ошибиться
Фрагмент принадлежит другому активити.
Активити.
//передача данных в фаргмент
Bundle bundle = new Bundle();
String test = "TEEEEST";
bundle.putString("title", test);
m_recept_frag fragment = new m_recept_frag();
fragment.setArguments(bundle);
Фрагмент.
public class m_recept_frag extends Fragment implements View.OnClickListener {
public m_recept_frag(){
}
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
m_recept_view mreceptview = new ViewModelProvider(this).get(m_recept_view.class);
View root = inflater.inflate(R.layout.m_recept, container, false);
//kod
Button spisok_rec = root.findViewById(R.id.Spis_rec);
spisok_rec.setOnClickListener(this);
Button add_rec = root.findViewById(R.id.Add_rec);
add_rec.setOnClickListener(this);
Button name_rec1 = root.findViewById(R.id.name_rec1);
name_rec1.setOnClickListener(this);
Button name_rec2 = root.findViewById(R.id.name_rec2);
name_rec2.setOnClickListener(this);
Button name_rec3 = root.findViewById(R.id.name_rec3);
name_rec3.setOnClickListener(this);
Button name_rec4 = root.findViewById(R.id.name_rec4);
name_rec4.setOnClickListener(this);
//Приём данных
String title = this.getArguments().getString("title");
name_rec1.setText(title);
return root;
}
Ошибка.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.kil_kniga, PID: 9665
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.BaseBundle.getString(java.lang.String)' on a null object reference
at com.example.kil_kniga.ui.m_recept.m_recept_frag.onCreateView(m_recept_frag.java:41)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Ответы (1 шт):
Автор решения: beeline09
→ Ссылка
Надо получать данные из Bundle в OnCreate и хранить например в приватной переменной. Потом обращаться к ней в методе OnViewCreated. В OnCreateView вьюха еще не создана - она только создается и может произойти что угодно, в т.ч. и то, что у Вас.