0

When i want to run some function on the fragment i got this error,

My error

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference at androidx.fragment.app.FragmentTransaction.doAddOp(FragmentTransaction.java:161) at androidx.fragment.app.BackStackRecord.doAddOp(BackStackRecord.java:179) at androidx.fragment.app.FragmentTransaction.replace(FragmentTransaction.java:225) at androidx.fragment.app.FragmentTransaction.replace(FragmentTransaction.java:200) at com.example.submission4.MainActivity.onCreate(MainActivity.java:71) at android.app.Activity.performCreate(Activity.java:7136) at android.app.Activity.performCreate(Activity.java:7127) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)

MainActivity :

public class MainActivity extends AppCompatActivity {
public static final String KEY_TITLE = "title";
public static final String KEY_FRAGMENT = "fragment";

private String title= null;

Fragment fragment = new MovieFragment() ;

private BottomNavigationView.OnNavigationItemSelectedListener onNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
        switch (menuItem.getItemId()){
            case R.id.nav_movie:
                fragment = new MovieFragment();
                title = getString(R.string.movie);
                getSupportActionBar().setTitle(title);
                break;
            case R.id.nav_tv:
                fragment = new TvFragment();
                title = getString(R.string.tv);
                getSupportActionBar().setTitle(title);
                break;
            case R.id.nav_favorite:
                fragment = new FavoriteFragment();
                title = getString(R.string.favorite);
                getSupportActionBar().setTitle(title);

        }
        return setFragment(fragment);
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setFragment(fragment);
    title = getString(R.string.movie);
    getSupportActionBar().setTitle(title);

    BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigation);
    bottomNavigationView.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener);

    if (savedInstanceState == null){
        getSupportFragmentManager().beginTransaction().replace(R.id.frameLayout,fragment).commit();
        getSupportActionBar().setTitle(title);
    }else {
        fragment = getSupportFragmentManager().getFragment(savedInstanceState,KEY_FRAGMENT);
        title = savedInstanceState.getString(KEY_TITLE);

        getSupportFragmentManager().beginTransaction().replace(R.id.frameLayout, fragment).commit();
        getSupportActionBar().setTitle(title);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_language,menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    if (item.getItemId() == R.id.change_language){
        Intent intent = new Intent(Settings.ACTION_LOCALE_SETTINGS);
        startActivity(intent);
    }
    return super.onOptionsItemSelected(item);
}


public boolean setFragment(Fragment fragment){
    if (fragment != null){
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.frameLayout,fragment)
                .commit();
        return true;
    }

    return false;
}

@Override
public void onSaveInstanceState(@NonNull Bundle outState, @NonNull PersistableBundle outPersistentState) {
    outState.putString(KEY_TITLE, title);
    getSupportFragmentManager().putFragment(outState,KEY_FRAGMENT,fragment);
    super.onSaveInstanceState(outState, outPersistentState);

}

error com.example.submission4.MainActivity.onCreate(MainActivity.java:71) reffer to

   getSupportFragmentManager().beginTransaction().replace(R.id.frameLayout, fragment).commit();

Please help me, Thank you

Thoriqul Umar
  • 35
  • 1
  • 1
  • 6
  • 2
    Does this answer your question? [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – gparyani Jan 10 '20 at 04:45
  • 1
    It seems from your error message (stack trace) that line 71 in your code is causing the issue. Can you please add a comment to your code indicating which line is line 71? – gparyani Jan 10 '20 at 04:46
  • IMHO, NPE popping up somewhere deep in the stack trace of the library/framework is not solved by the referred "a duplicate of" question. Definitely a part of configuration is missing somewhere. – J-Alex Jan 10 '20 at 10:26

0 Answers0