3

HomeViewすでに別のアクティビティを拡張しているアクティビティがあり、拡張できませんAppCompatActivity。ただし、HomeView にはツールバーが必要です。Android のドキュメントによると、ツールバーが必要なアクティビティは拡張する必要がありますAppCompatActivity

この制限を回避するにはどうすればよいですか?

4

2 に答える 2

3

AppCompatCallbackを実装して使用する必要がありますAppCompatDelegate。それを使用する方法についての優れた記事は次のとおりです。 .nu​​yghrgr9を確認し、委任するメソッドを知るためにhttps://developer.android.com/reference/android/support/v7/app/AppCompatDelegate.htmlも確認してください。


AppCompatDelegate

このクラスは、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()
于 2015-10-28T17:41:06.653 に答える
0

実際には、それは非常に簡単です:

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

于 2019-11-12T19:13:18.527 に答える