How Can An Activity Use A Toolbar Without Extending Appcompatactivity
Solution 1:
You need to implement AppCompatCallback
and use AppCompatDelegate
. Here's an excellent article about how to use it: https://medium.com/google-developer-experts/how-to-add-toolbar-to-an-activity-which-doesn-t-extend-appcompatactivity-a07c026717b3#.nuyghrgr9 and also check out https://developer.android.com/reference/android/support/v7/app/AppCompatDelegate.html for knowing which methods to delegate.
AppCompatDelegate
This class represents a delegate which you can use to extend AppCompat's support to any Activity.
When using an AppCompatDelegate, you should any methods exposed in it rather than the Activity method of the same name. This applies to:
addContentView(android.view.View, android.view.ViewGroup.LayoutParams)
setContentView(int)
setContentView(android.view.View)
setContentView(android.view.View, android.view.ViewGroup.LayoutParams)
requestWindowFeature(int)
invalidateOptionsMenu()
startSupportActionMode(android.support.v7.view.ActionMode.Callback)
setSupportActionBar(android.support.v7.widget.Toolbar)
getSupportActionBar()
getMenuInflater()
There also some Activity lifecycle methods which should be proxied to the delegate:
onCreate(android.os.Bundle)
onPostCreate(android.os.Bundle)
onConfigurationChanged(android.content.res.Configuration)
setTitle(CharSequence)
onStop()
onDestroy()
Solution 2:
Actually, it is pretty simple:
publicclassYourActivityextendsSomeActivityimplementsAppCompatCallback {
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// create the delegate
delegate = AppCompatDelegate.create(this, this);
delegate.onCreate(savedInstanceState);
delegate.setContentView(R.layout.activity_details);
// add the ToolbarToolbar toolbar= (Toolbar) findViewById(R.id.toolbar);
delegate.setSupportActionBar(toolbar);
}
@OverridepublicvoidonSupportActionModeStarted(ActionMode mode) {
// leave it empty
}
@OverridepublicvoidonSupportActionModeFinished(ActionMode mode) {
// leave it empty
}
@Nullable@OverridepublicActionModeonWindowStartingSupportActionMode(ActionMode.Callback callback) {
returnnull;
}
That's it. Please, don't forget to set a AppTheme.NoActionBar
theme to YourActivity
in the AndroidManifest.xml
.
Post a Comment for "How Can An Activity Use A Toolbar Without Extending Appcompatactivity"