В вашем MainActivity
вы надуваете макет activity_main
, который не имеет TextView
. Следовательно, вы получаете NullPointerException
, пытаясь найти TextView
и назначить ему некоторый текст.
В методе onCreate
вашего класса MainActivity
пытается установить текст в TextView
, которого нет или нет. Макет fragment_assignments.xml
может быть завышен в вашем фрагменте, и, следовательно, вы найдете ссылку на макет там во фрагменте.
Похоже, вы хотите передать информацию об аутентификации в свой фрагмент и установить там какое-то значение. В этом случае вы можете просто передать информацию с помощью пакета при выполнении транзакции фрагмента.
Следовательно, у вас может быть следующая функция для вашей транзакции фрагмента в вашей деятельности.
public void launchAssignmentFragment() {
AssignmentFragment frag = new AssignmentFragment();
Bundle bundle = new Bundle();
if (mAuth.getCurrentUser() != null) {
bundle.putBoolean("auth", true);
} else {
bundle.putBoolean("auth", false);
}
// set Arguments to be passed to the fragment
frag.setArguments(bundle);
// Now load the fragment
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, frag);
transaction.addToBackStack(null);
transaction.commit();
}
Теперь из onCreateView
вашего фрагмента вы можете сделать что-то подобное.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout. fragment_assignments, parent, false);
TextView tv = rootView.findViewById(R.id.textview_assignemntsheader);
// Get the passed-in value here
boolean auth = getArguments().getBoolean("auth");
if (auth) tv.setText("Success");
else tv.setText("Fail");
return rootView;
}
И, наконец, обновите ваш onCreate
в MainActivity
следующим образом.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mAuth = FirebaseAuth.getInstance();
nav_view = findViewById(R.id.nav_view);
nav_view.setNavigationItemSelectedListener(this);
drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.nav_drawer_open, R.string.nav_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
try {
Intent intent = getIntent();
if (intent.getStringExtra("activity").equals("register")) {
getSupportFragmentManager().beginTransaction().replace(R.id.framgment_container, new UserprofileFragment()).commit();
}
} catch (NullPointerException noIntentExtra) {
getSupportFragmentManager().beginTransaction().replace(R.id.framgment_container, new AssignmentsFragment()).commit();
}
if (mAuth.getCurrentUser() != null){
launchAssignmentFragment(); // launch the fragment maybe?
}
}
Надеюсь, это поможет!