Articles of android actionbaractivity

带有ActionBarActivity的ActivityUnitTestCase的NameNotFoundException

我正在尝试为现有的应用程序编写一些testing。 我想提供一个testing应用程序类的testing,我跟着这里的例子,因为我也使用Dagger的DI。 但是,如果被测活动是一个ActionBarActivity,我得到以下exception: java.lang.IllegalArgumentException: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{mypackage.view.activity/mypackage.view.activity.MyActivity} at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:282) at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:116) at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) at mypackage.view.activity.MyActivity.onCreate(MyActivity.java:68) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158) at mypackage.MyActivityTest.test(MyActivityTest.java:89) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701) Caused by: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{mypackage.view.activity/mypackage.view.activity.MyActivity} at android.app.ApplicationPackageManager.getActivityInfo(ApplicationPackageManager.java:242) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:298) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:279) … 21 more 我的testing类如下所示: public class […]

在ActionBarActivity中从/等同于getActivity()

就像我的标题所说,我在我的Android project ActionBarActivity类中寻找相当于getActivity() 。 我想在AsyncTask声明对象中传递一个Activity参数,因为我在我的自定义AsyncTask扩展类中使用了一个Activity对象 这里是我的项目最简单的代码示例 public class EventCreator extends ActionBarActivity { private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_even_creator); View v = getLayoutInflater().inflate(R.layout.activity_even_creator,null); this.context = this.getBaseContext(); final Button createButton = (Button)findViewById(R.id.createEventButton); createButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AsyncTask<Void,Void,Boolean> eventCreatorSend = new SendEvents(/* here need activity object */); eventCreatorSend.execute(); […]

AppCompat v7工具栏上/下箭头不起作用

我在活动中有两个片段。 当片段A显示时,我希望显示导航抽屉汉堡图标并使抽屉导航工作。 当片段B显示时,我想要后退箭头显示,当它被点击做一个向上的导航。 然而,我似乎无法得到新的AppCompat v7工具栏显示在我的ActionBarActivity里面的向上箭头,除非导航抽屉打开。 在我的活动中,我的onCreate()方法… toolbar = (Toolbar) findViewById(R.id.toolbar); if (toolbar != null) { setSupportActionBar(toolbar); } mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close); mDrawerLayout.setDrawerListener(mDrawerToggle); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); 然后我调用mDrawerToggle.syncState(); 在我的onPostCreate() 我试着search如何以编程方式触发工具栏图标到后退箭头,但没有任何工作。 从我所收集到的,呼唤 getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); 从我的片段应该改变图标,但事实并非如此。 这可能是一个愚蠢的问题,但我做错了什么?

使用RobolectrictestingActionBarActivity时出错

我正在使用Robolectric从我的应用程序中testing活动。 该活动扩展了ActionBarActivity。 当我testing活动时,我得到的错误:“IllegalStateException:您需要使用Theme.AppCompat主题(或后代)与此活动。 我的testing环境是这样的:Android Studio 0.8.6,Robolectric 2.4-SNAPSHOT,support-v4库版本20.0,appcompat-v7版本20.0。 现在的课程。 活动 : public class FilterActivity extends ActionBarActivity testing类: @Config(emulateSdk = 18, manifest = "src/main/AndroidManifest.xml") @RunWith(RobolectricTestRunner.class) public class FilterActivityTest { private FilterActivity activity; @Before public void setUp() throws Exception { activity = Robolectric.buildActivity(FilterActivity.class).create().get(); } @After public void tearDown() throws Exception { activity.finish(); } @Test public void testOnCreate() { […]

必须在添加内容之前调用ActionBarActivity requestFeature

编辑反映matias's评论 其实,原本我没有支持supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 或requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 在我的代码中,直到我注意到runtime exception when below combinations of actions happened的runtime exception when below combinations of actions happened 用户按下主页button以最小化应用程序,并尝试从最近的应用程序 ( 这是长按主页button ) 发生屏幕旋转时(注意:清单没有 configChange声明) 然后我认为在初始化过程中显示不确定的进度栏应该导致问题,所以只有我试图调用request*方法,认为它会清除它,但没有发生任何事情.. 最后我删除了showPdIndeterminate(); 为了testing。 因此,我没有在我的代码显示它。 在上述情况下仍然是一样的 我有一个基于片段的ActionBarActivity ,我的布局被包装在DrawerLayout有two framelayouts来容纳两个frgaments。 我尝试了requestFeature()之前必须调用super.onCreate添加内容错误,但仍然是例外 @Override protected void onCreate(Bundle savedInstanceState) { Log.e(TAG, "Inside OnCreate"); // supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showPdIndeterminate(); …. } 和showPdIndeterminate()是 private void showPdIndeterminate() { […]

为什么在ActionBarActivity上运行我的testing时会得到一个NoClassDefFoundError?

所以我使用的是Robotium,我的testing课程扩展了ActivityInstrumentationTestCase2类。 我已经在我的主项目中导入了v7支持库,并且还在testing项目中导入了库。 现在我不明白的是,testing类正在工作,当我改变被testing的类来扩展Activity但是当我改变它到ActionBarActivity它返回一个NoClassDefFoundError 。 我错过了什么? 这是我得到的日志 04-11 21:32:16.551: E/dalvikvm(23925): Could not find class 'com.example.project.ActivityClass', referenced from method com.example.project.tests.ActivityClass.<init>

自定义视图的扩展工具栏不能以全宽显示

我经历了很多有关工具栏的答案,但是没有一个答案可以帮助我。 我想要实现的是有一个扩展的工具栏,它将显示一个标志,可能是一个活动/应用程序的名称,它将有一个行动button/抽屉切换到右侧,将显示一个类似导航的抽屉正确的,溢出菜单与其他选项,如设置,还有一个导航选项卡在底部,将允许用户在不同的片段(一个月不同的天)之间移动。 我试图达到这一点的方式是通过工具栏。 首先我创build工具栏并添加我的自定义视图。 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar_actionbar" android:layout_width="match_parent" android:layout_height="@dimen/min_double_toolbar_height" app:theme="@style/ThemeOverlay.AppCompat.ActionBar" android:minHeight="?attr/actionBarSize" android:background="@color/primary" app:contentInsetStart="0dp" app:contentInsetEnd="0dp" app:contentInsetLeft="0dp" app:contentInsetRight="0dp" android:clipToPadding="false" > <!– ThemeOVerlay Makes sure the text and items are using solid colors–> <include android:layout_width="match_parent" android:layout_height="72dp" android:layout_gravity="bottom" layout="@layout/day_navigation_tab" /> </android.support.v7.widget.Toolbar> day_navigation_tab只是一个水平的两个图像视图,填充72dp(如指导)和文本视图与布局权重设置为1,因此它延伸了整个可用空间。 和72dp的高度。 现在,在我的BaseActivity XML中,我将工具栏包含在主要上下文的Framelayout中(否则工具栏将覆盖整个屏幕,对于我来说是一个未知的原因)(花了我很长时间才知道) <…ommited> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"> <include android:id="@+id/toolbar" layout="@layout/app_bar" /> </FrameLayout> […]

无法将Appcompat主题从光线更改为全黑

我试图完全改变我的应用程序的主题,这是我修改和尝试: 值文件夹中的styles.xml是 <resources> <!– Base application theme, dependent on API level. This theme is replaced by AppBaseTheme from res/values-vXX/styles.xml on newer devices. –> <style name="AppBaseTheme" parent="android:Theme.Holo"> <!– Theme customizations available in newer API levels can go in res/values-vXX/styles.xml, while customizations related to backward-compatibility can go here. –> </style> <!– Application theme. –> <style name="AppTheme" parent="AppBaseTheme"> […]

.getSupportActionBar在Fragment中不可用; 解决方法导致旋转时发生NullPointerException

结构体 (活动/片段的名称已更改) 基于Android编程写的一些build议:大书呆子牧场指南 ,我有以下结构: MyListFragment extends ListFragment MyListActivity extends SimpleFragmentActivity SimpleFragmentActivity extends ActionBarActivity MyListActivity.java public class MyListActivity extends SingleFragmentActivity { @Override protected Fragment createFragment() { return new MyListFragment(); } } SingleFragmentActivity.java public abstract class SingleFragmentActivity extends ActionBarActivity { protected abstract Fragment createFragment (); @Override public void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fragment); FragmentManager fm = […]

ActionBarDrawerToggle的ActionBarActivity – 不使用drawerImageRes

从这个android示例工作,我试图创build一个使用支持版本(android.support.v4和android.support.v7)的应用程序。 这个例子创build了一个如下所示的菜单抽屉 和我的代码得到这个 注意图标是不同的,它的移动方式是不同的,在我的版本中它不会移动。 示例代码 public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; private CharSequence mDrawerTitle; private CharSequence mTitle; private String[] mPlanetTitles; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTitle = mDrawerTitle = getTitle(); mPlanetTitles = getResources().getStringArray(R.array.planets_array); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); // set […]