Я пытаюсь открыть и закрыть ящик навигации с помощью ImageButton в Android Studio.Моя трудность заключается в том, что я не могу использовать определенные методы, потому что я нахожусь внутри фрагментированного подкласса.Это ошибка, которую я получаю.
Причина: java.lang.NullPointerException: Попытка вызвать виртуальный метод 'android.view.View android.view.View.findViewById (int)' нассылка на пустой объект в dadump.test.HomeFragment.onCreateView (HomeFragment.java:27)
Вот мой код, в котором вызывается ошибка. У меня также есть метод open () вмоя домашняя деятельность, которая имеет только одну строку: mDrawerLayout.openDrawer(Gravity.LEFT);
.
public class HomeFragment extends Fragment {
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mToggle;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View View = inflater.inflate(R.layout.fragment_home, null);
ImageButton button = (ImageButton)getView().findViewById(R.id.button_settings);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(android.view.View view) {
((MainActivity)getActivity()).open();
}
});
return View;
}
}
Основной класс:
public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
private DrawerLayout mDrawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView navigation =findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(this);
setupBottomNavigationView();
loadFragment(new HomeFragment());
}
private void setupBottomNavigationView(){
BottomNavigationViewEx bottomNavigationViewEx = (BottomNavigationViewEx)findViewById(R.id.navigation);
BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationViewEx);
}
private boolean loadFragment(android.support.v4.app.Fragment fragment) {
if(fragment != null){
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
return true;
}
return false;
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
android.support.v4.app.Fragment fragment = null;
switch(item.getItemId()){
case R.id.ic_home:
fragment = new HomeFragment();
break;
case R.id.ic_directMessage:
fragment = new DirectMessageFragment();
break;
case R.id.ic_newPost:
fragment = new NewPostFragment();
break;
case R.id.ic_notifications:
fragment = new NotificationsFragment();
break;
case R.id.ic_userProfile:
fragment = new UserProfileFragment();
break;
}
return loadFragment(fragment);
}
public void open() {
mDrawerLayout.openDrawer(Gravity.LEFT);
}
}