Articles of android actionbaractivity

在Android中的Action Bar标题上设置OnClick Listener

我正在使用Android应用程序,我正在使用ActionBar因此有一个导航抽屉图标在ActionBar打开它和ActionBar标题。 我想在ActionBar标题上设置一个单击侦听器,以便它启动一个新的Activity并在导航抽屉图标上设置不同的单击侦听器以打开导航抽屉菜单。 我点击了导航抽屉图标,但是当我点击ActionBar标题的标题时,它也会打开导航抽屉菜单。 有没有办法在ActionBar标题上设置不同的单击侦听器。 提前致谢。

更改导航抽屉的图标

我将导航抽屉图标更改为自定义图标时遇到问题。 我目前不得不实现标准的抽屉图标,顶部有3条水平线,但现在我想用我的自定义抽屉图标替换它。 这就是我的mDrawerToggle目前的情况: mDrawerToggle=new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.app_icon, R.string.drawer_open) { // My code };

如何居中工具栏后退按钮?

我在尝试将支持工具栏上的后退按钮居中时遇到问题。 我在ActionBarActivity中使用它。 并在Activity的onCreate()设置向上导航,如下所示: Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setTitle(R.string.title_activity_scanner); getSupportActionBar().setDisplayHomeAsUpEnabled(true); 但是,我得到的是: 如您所见,后退按钮放错了位置 编辑:问题似乎在于?attr/actionBarSize actionBarSize设置为40dp的自定义值,但是,现在结果是,它是错误放置的标题。

带有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> […]