【问题标题】:Toolbar when extending Activity扩展 Activity 时的工具栏
【发布时间】:2015-06-19 15:05:32
【问题描述】:

我需要扩展 Activity 而不是 ActionBarActivity 或 AppCompatActivity 才能使用第三方库。

在所有应用程序中,我一直在使用 AppCompatActivity 以便在其中轻松添加工具栏,但如果我扩展 Activity,显然我不能这样做。我也很高兴拥有一个 ActionBar:它不一样,但总比没有好。不过,我不知道该怎么做:-/

你对我有什么建议吗?我知道这可能是一个愚蠢的问题,但我只是不知道如何完成这项工作......

【问题讨论】:

  • ActionBarActivity extends Activity,所以你的第三方库应该可以使用它。您面临什么问题?
  • 我需要扩展应用程序提供的OPActivity,以便使用一些方法。 OPActivity 扩展了 Activity,而不是 ActionBarActivity,我无法在 Java 中扩展多个类:-/
  • 该库显然是在一个 Jar 中,所以我无法将“扩展 Activity”更改为更合适的“扩展 ActionBarActivity”;-)
  • 您使用的库可能已过时。你应该要求他们提供一个新的。

标签: android android-activity android-actionbar android-appcompat android-toolbar


【解决方案1】:

首先检查您正在使用的库。它可能已经过时了。

使用新的 22.1+ appcompat,您可以使用 AppCompatDelegate 将 AppCompat 的支持扩展到任何 Activity。

您可以查看AppCompatPreferenceActivity 的官方链接,您可以在其中找到该技术的示例。

你有:

  • Toolbar 添加到您的Activity

类似这样的:

<android.support.v7.widget.Toolbar
    android:id="@+id/mytoolbar"
    android:background="?attr/colorPrimary"/>
  • 在没有 ActionBar 的情况下使用 AppCompat Theme

类似这样的:

  <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="colorPrimary">@color/myColor</item>
        ....
    </style>
  • AppCompatDelegate 添加到您的Activity

类似:

public class MainActivity extends Activity implements AppCompatCallback {

      private AppCompatDelegate delegate;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            //create the delegate        
            delegate = AppCompatDelegate.create(this, this);

            //call the onCreate() of the AppCompatDelegate
            delegate.onCreate(savedInstanceState);

            //use the delegate to inflate the layout
            delegate.setContentView(R.layout.activity_main);

            //add the Toolbar
            Toolbar toolbar= (Toolbar) findViewById(R.id.mytoolbar);
            delegate.setSupportActionBar(toolbar);
        }

   //.....
}

查看官方示例,包装您的 Activity 的其他方法,以完全兼容 AppCompatActivity。

【讨论】:

  • Gabriele,我想我爱你 :-) 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
相关资源
最近更新 更多