HomeViewすでに別のアクティビティを拡張しているアクティビティがあり、拡張できませんAppCompatActivity。ただし、HomeView にはツールバーが必要です。Android のドキュメントによると、ツールバーが必要なアクティビティは拡張する必要がありますAppCompatActivity。
この制限を回避するにはどうすればよいですか?
HomeViewすでに別のアクティビティを拡張しているアクティビティがあり、拡張できませんAppCompatActivity。ただし、HomeView にはツールバーが必要です。Android のドキュメントによると、ツールバーが必要なアクティビティは拡張する必要がありますAppCompatActivity。
この制限を回避するにはどうすればよいですか?
AppCompatCallbackを実装して使用する必要がありますAppCompatDelegate。それを使用する方法についての優れた記事は次のとおりです。 .nuyghrgr9を確認し、委任するメソッドを知るためにhttps://developer.android.com/reference/android/support/v7/app/AppCompatDelegate.htmlも確認してください。
このクラスは、AppCompat のサポートを任意のアクティビティに拡張するために使用できるデリゲートを表します。
AppCompatDelegate を使用する場合は、同じ名前の Activity メソッドではなく、その中で公開されているすべてのメソッドを使用する必要があります。これは以下に適用されます。
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()
デリゲートにプロキシする必要があるいくつかのアクティビティ ライフサイクル メソッドもあります。
onCreate(android.os.Bundle)
onPostCreate(android.os.Bundle)
onConfigurationChanged(android.content.res.Configuration)
setTitle(CharSequence)
onStop()
onDestroy()
実際には、それは非常に簡単です:
public class YourActivity extends SomeActivity implements AppCompatCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// create the delegate
delegate = AppCompatDelegate.create(this, this);
delegate.onCreate(savedInstanceState);
delegate.setContentView(R.layout.activity_details);
// add the Toolbar
Toolbar toolbar= (Toolbar) findViewById(R.id.toolbar);
delegate.setSupportActionBar(toolbar);
}
@Override
public void onSupportActionModeStarted(ActionMode mode) {
// leave it empty
}
@Override
public void onSupportActionModeFinished(ActionMode mode) {
// leave it empty
}
@Nullable
@Override
public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) {
return null;
}
それでおしまい。でAppTheme.NoActionBarテーマを設定することを忘れないでください。YourActivityAndroidManifest.xml