我在使用Eclipse的Android JUnittestingtesting一个使用ActionBarActivity的应用程序时出现了问题,这个应用程序使用了android-support-v7-appcompat。 在模拟器或设备上运行时,似乎一切正常。 我尝试使用一个模拟应用程序在ActivityUnitTestCase和startActivity与ActionBarActivity和改变了值的母版主题-V11等,如在ActionBarCompatbuild议:java.lang.IllegalStateException:您需要使用一个Theme.AppCompat,但它仍然无法正常工作。 你需要使用一个Theme.AppCompat主题(或后代),这个活动也不会给出答案,也就是说,提问的人既没有在他的清单中指定的Theme.AppCompat(我也这么做),也没有真的想要扩展ActionBarActivity(我这样做)。 他的解决scheme是简单地扩展Activity。 我究竟做错了什么? 这是我得到的错误(Junit窗口中的Failure-Trace): java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:108) at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) at android.hello.HelloWorldActivity.onCreate(HelloWorldActivity.java:14) at android.app.Activity.performCreate(Activity.java:5104) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158) at android.hello.test.HelloWorldActivityTest.setUp(HelloWorldActivityTest.java:26) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661) HelloWorldActivity.java package android.hello; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.app.Activity; import […]
我在我的应用中使用下面的代码添加了android.support.v7.widget.Toolbar ,现在我想在工具栏的右端显示一个button,但是不能这样做。 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/accent_color" android:minHeight="?attr/actionBarSize" android:layout_alignParentTop="true" tools:context=".MyActivity" android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/showevents" android:textSize="12sp" android:background="@null" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:textColor="@color/white" android:text="UPCOMING \nEVENTS"/> </android.support.v7.widget.Toolbar> 我也添加了下面的图片,但是没有被移动到正确的位置。 android:layout_alignParentEnd="true" android:layout_alignParentRight="true" 附图供参考:
我有一个相对简单的Android应用程序,一个Activity显示项目列表,另一个显示选定项目的详细信息。 我开始列表活动,这是我最重要的活动(使用FLAG_ACTIVITY_CLEAR_TOP来清除从中调用它的login活动): Intent intent = new Intent(this, ListInstancesActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); finish(); 并从该活动内我采取行动select一个项目: Intent detailIntent = new Intent(this, ShowInstanceActivity.class); detailIntent.putExtra(ShowInstanceFragment.ARG_ITEM_ID, id); startActivity(detailIntent); 所有的工作正常,如果我使用软键“返回”button,然后我回到我所期望的ListInstancesActivity 。 但是,如果我按下操作栏上的上/下button,则会销毁并重新创buildListInstancesActivity 。 这很糟糕,因为这样做在计算上相对昂贵。 如何使操作栏的行为与软键相同,只需返回到上一个活动而不是销毁它。 应该指出,我正在使用操作栏的支持库版本。 我的AndroidManifest.xml的相关部分是 <activity android:name=".agenda.ListInstancesActivity" android:label="@string/list_instances_activity_title"> </activity> <activity android:name=".agenda.ShowInstanceActivity" android:label="@string/show_instance_activity_title" android:parentActivityName=".agenda.ListInstancesActivity"> </activity>
我正在使用v7 appcompat 21库在前棒棒糖设备上使用新的材质样式。 我的styles.xml如下所示: <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:textColorPrimary">#ff0000</item> <item name="android:textColorPrimaryInverse">#ff0000</item> </style> 我正在尝试更改操作栏上的文字颜色。 但不pipe我为textColorPrimary或textColorPrimaryInverse放置什么颜色都是白色的。 如果我从Theme.AppCompatinheritance,我可以覆盖“textColorPrimary”,如果我从Theme.AppCompat.Lightinheritance,我可以覆盖“textColorPrimaryInverse”。 但是在使用Light.DarkActionBar主题时,这两者都不起作用。 我绝对使用AppTheme,因为设置像colorPrimary属性来更改操作栏背景颜色工作正常。 我没有使用任何其他资源限定符样式文件。 我已经挖通过Android的样式文件,似乎无法弄清楚什么属性重写。 有任何想法吗? 这是一个appcompat错误?
我想转换我的应用程序使用v21 AppCompat库,所以我开始使用工具栏,而不是ActionBar。 在我所有的常规活动(扩展ActionBarActivity)中,一切都很好。 但在我的设置活动,它扩展了PreferenceActivity,因此我不能使用setSupportActionBar(actionbar)调用我需要使用“独立”工具栏。 工具栏显示出来,但我不知道如何添加“home / up”button到工具栏。 SettingsActivity.java: public class SettingsActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); Toolbar actionbar = (Toolbar) findViewById(R.id.actionbar); if (null != actionbar) { // In every other activity that extends ActionBarActivity I simply use: // setSupportActionBar(actionbar); // final ActionBar supportActionBar = getSupportActionBar(); // supportActionBar.setDisplayHomeAsUpEnabled(true); // but […]
我想添加支持操作栏到我的一个活动,我以前一直在使用theme.translucent这个活动,但为了使支持的actionbar工作,我需要inheritance的Theme.AppCompat,我需要保持半透明主题在这个活动,但不幸的是没有一个Theme.AppCompat.translucent,我可以看到默认情况下,有没有什么办法可以做到这一点?
我在我的应用程序中使用appcompat。 我希望菜单项显示在操作栏上,或者至less是溢出(3个点),以便在没有空间时显示它们。 操作栏上有很多空间,但仍然不显示。 菜单stream程从底部开始,也仅在菜单button被按下时才起作用。 menu_activity.xml: <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/menu_lang" android:showAsAction="always" android:title="@string/menu_lang" android:icon="@android:drawable/ic_input_lang"/> </menu> 活动: @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_activity, menu); return true; } 这篇文章说,当硬件菜单button存在时,它不起作用。 但其他应用程序能够在同一设备上显示项目。 所以,这个答案似乎是不正确的。 有人可以帮忙吗?
我开始一个使用AppCompat/ActionBarCompat v7支持库的新项目。 我想弄清楚如何使用片段内的getSupportActionBar 。 我的活动,承载片段扩展ActionBarActivity ,但我没有看到类似的支持类的碎片。 从我的片段中 public class CrimeFragment extends Fragment { //… getActivity().getSupportActionBar().setSubtitle(R.string.subtitle); // getSupportActionBar is not defined in the v4 version of Fragment //… } 谷歌页面使用它( http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html )说,应该没有变化的v4片段。 我是否需要将所有的getActivity()调用转换为ActionBarActivity ? 这似乎是糟糕的devise。
我使用从Android 4.3(API级别18)开始的新的v7 appcompat库。 无论showAsAction中为菜单项指定什么,都不会显示 – 它总是创build溢出菜单图标,甚至在菜单下放置一个菜单项。 尝试将菜单添加到像这样的活动: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_sizes, menu); return true; } 这里是我的菜单xml: <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_add_size" android:title="@string/menu_add_item" android:orderInCategory="10" android:showAsAction="always" android:icon="@android:drawable/ic_menu_add" /> </menu> 这是新的支持库V7的错误,或只是代码有问题吗? 我之前多次使用过与ActionBarSherlock类似的代码。
我从我的应用程序从ActionBar迁移到Toolbar 。 但是我不知道如何在Toolbar上的Back Arrow上显示和设置点击事件,就像我在Actionbar上做的Actionbar 。 用ActionBar ,我打电话给mActionbar.setDisplayHomeAsUpEnabled(true) 。 但是没有类似的方法。 有没有人曾经遇到这种情况,并以某种方式find解决办法?