I want to create an abstract BaseActivity class from which other Activity in the project would inherit, in all Activity classes I now use the Toolbar , so I want to transfer the functionality associated with the Toolbar to BaseActivity . I do not know how to do it right.

I do it the BaseActivity class:

 public abstract class BaseActivity extends AppCompatActivity { Toolbar toolbar; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); // NullPointerException toolbar.setTitleTextColor(Color.WHITE); toolbar.setSubtitleTextColor(Color.WHITE); toolbar.setNavigationIcon(R.drawable.ic_arrow_back_24dp); } public void addToolbarTitle(String titleName){ toolbar.setTitle(titleName); }; } 

Then I inherit the usual Activity from BaseActivity :

 public class ConversationActivity extends BaseActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_conversation); } } 

I get a NullPointerException in BaseActivity , how to do it right?

    1 answer 1

    Before the setContentView() call, the view does not exist and a call to findViewById(R.id.toolbar) returns null . Bring the toolbar installation code to a separate method in BaseActivity and call it in the onCreate() child classes after setting the layout.

     public abstract class BaseActivity extends AppCompatActivity { Toolbar toolbar; protected void setToolbar() { toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setTitleTextColor(Color.WHITE); toolbar.setSubtitleTextColor(Color.WHITE); toolbar.setNavigationIcon(R.drawable.ic_arrow_back_24dp); } public void addToolbarTitle(String titleName){ toolbar.setTitle(titleName); }; } public class ConversationActivity extends BaseActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_conversation); setToolbar(); } } 
    • Thank you, just what you need! - Lucky_girl