Articles of android support library

Android DialogFragment不会被忽略

我在Android中有一个自定义对话框,我在onCreateView方法上创建对话框视图。 public class FiltroDialog extends DialogFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 当我尝试关闭对话框时,我在onClickListener调用的对话框中有一个方法 boton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.d(TAG,”doDismiss”); FiltroDialog.this.dismiss(); } }); 我已经覆盖了对话框中的几个onMethods,以查看对话框中发生的事情。 @Override public void onDestroyView() { super.onDestroyView(); Log.d(TAG, “onDestroyView”); } @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.d(TAG, “onAttach”); } @Override public void onDetach() […]

自定义ActionBar选项卡支持的填充

我想删除ActionBar选项卡之间的填充(空格)。 我正在使用Android支持库V7(Appcompat)将片段和Android 2.2 API 8中的ActionBar用作minSDK和4.4 API 19作为maxSDK。 我尝试了以下但它没有改变任何东西。 我的styles.xml @style/TabBarStyle 2dp 2dp 来自AndroidManifest.xml我的活动 有人可以告诉我如何正确扩展和使用自定义主题。

“ActionBarDrawerToggle”何时显示其“openDrawerContentDescRes”和“closeDrawerContentDescRes”字符串?

背景 “ActionBarDrawerToggle”的CTOR如下: public ActionBarDrawerToggle (Activity activity, DrawerLayout drawerLayout, int openDrawerContentDescRes, int closeDrawerContentDescRes) 要么: public ActionBarDrawerToggle (Activity activity, DrawerLayout drawerLayout, Toolbar toolbar, int openDrawerContentDescRes, int closeDrawerContentDescRes) 文档告诉你字符串参数,( 这里 ): 必须提供字符串资源来描述可访问性服务的打开/关闭抽屉操作。 问题 我找不到这些字符串被使用的场景。 我试过的 与行动项目相反,每次我长时间点击一个项目时我都可以看到一个祝酒词,这里我找不到在哪种情况下我可以看到它。 这个问题 为什么需要它? 在哪些情况下显示? 它是否像ImageView发生的那样? 如果是这样,我仍然想知道何时使用这些字符串以及如何(在ImageView和这里)。

升级到AppCompat v22.1.0,现在出现“删除属性”错误

我刚刚升级了我的应用程序以使用AppCompat v22.1.0,我从AppCompat布局XML文件中获得以下exception: removing attribute http://schemas.android.com/apk/res/android:layout_marginEnd from removing attribute http://schemas.android.com/apk/res/android:textAlignment from removing attribute http://schemas.android.com/apk/res/android:layoutDirection from 我升级到JDK的v1.8版本,但也无法正常工作。

FragmentManager.getFragment()NullPointerException

我正在使用支持库v4并且无法保存片段的状态。 @Override protected void onSaveInstanceState(Bundle outState) { … if(mFragment != null) getSupportFragmentManager().putFragment(outState, “frag”, mFragment); … } @Override protected void onCreate(Bundle savedInstanceState) { … if(savedInstanceState != null) { //Here I get NullPointerException getSupportFragmentManager().getFragment(savedInstanceState, “frag”); } … } 当我调用getFragment()时抛出NullPointerException(savedInstanceState包含带有“frag”的条目)。 这是logcat输出的一部分: 04-18 00:10:56.719: E/AndroidRuntime(14644): Caused by: java.lang.NullPointerException 04-18 00:10:56.719: E/AndroidRuntime(14644): at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:569) 我也尝试调用返回null getFragments() 。 这在我看来很奇怪。 我将不胜感激! 解: […]

工具栏:始终显示溢出菜单按钮

问题 :更新支持库并使用工具栏后,溢出菜单按钮始终显示在带有和不带硬件菜单按钮的设备上 我需要的是 :我希望溢出菜单按钮仅在设备没有硬件菜单按钮时显示 menu.xml文件 在活动中(ActionBarActivity) @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } 并在onCreate:setSupportActionBar(mToolbar); 帮助将不胜感激!

使用v7支持库AlertDialog时Robolectric InflateException

使用普通的android.app.AlertDialog与ShadowAlertDialog.getLatestAlertDialog() ,但如果使用支持库android.support.v7.app.AlertDialog ,则会发生以下exception: android.view.InflateException: XML file app/build/intermediates/res/qa/debug/layout/abc_alert_dialog_material.xml line #-1 (sorry, not yet implemented): Error inflating class android.support.v7.internal.widget.DialogTitle at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at android.view.LayoutInflater.inflate(LayoutInflater.java:353) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249) at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:75) at android.support.v7.app.AlertController.installContent(AlertController.java:216) at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:240) at android.app.Dialog.dispatchOnCreate(Dialog.java:361) at android.app.Dialog.show(Dialog.java:262) at org.robolectric.shadows.ShadowDialog.show(ShadowDialog.java:65) at android.app.Dialog.show(Dialog.java) Caused by: java.lang.StringIndexOutOfBoundsException: String index out […]

对话框视图必须包含id为@android:id / edit的EditText

我正在使用support:preference-v7:25.0.1并且在我的应用程序中我使用PreferenceActivity来设置EditText用户名。 当我运行我的应用程序时,在运行时我收到以下错误: E/AndroidRuntime: FATAL EXCEPTION: main Process: it.company.android.aaaa, PID: 8023 java.lang.IllegalStateException: Dialog view must contain an EditText with id @android:id/edit at android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.onBindDialogView(EditTextPreferenceDialogFragmentCompat.java:67) at android.support.v7.preference.PreferenceDialogFragmentCompat.onCreateDialog(PreferenceDialogFragmentCompat.java:148) at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:312) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5633) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712) at dalvik.system.NativeStart.main(Native […]

如何在onLoadFinish回调方法中提交FragmentPagerAdapter中的Fragment事务?

我想通知ViewPagerAdapter在Loader.onLoadFinish回调函数中更改了数据集。 它被阻止了,因为可能会保存片段的状态。 从LoaderManager.LoaderCallbacks.onLoadFinished(Loader loader,D data)方法文档: 请注意,通常,在此调用中,不允许应用程序提交片段事务,因为它可能在保存活动状态后发生。 我怎样才能克服这个问题? 如何检查Activity是哪个状态并提交Fragment事务?

Android View Pager以错误的方式摆弄

我在android view-pager(ACL的r4)中发现了一个有趣的bug。 当在较旧或较慢的设备上滚动手指太快/离开屏幕边缘时,速度跟踪器将以错误的方式投射视图寻呼机。 我可以在原版Galaxy Tab,HTC Desire,Nexus One,旧金山,HTC Hero上重现。 打开谷歌+,市场或具有相当变化的视图寻呼机实现的东西。 如果您转到最左侧的页面,然后轻轻地将手指拉过屏幕的右边缘,您可以使视图寻呼机向右跳(与拖动方向相反的方向) 。 我需要进行更多调查,但这看起来速度跟踪器无法跟上速度较慢的设备。 当然,当从左向右快速滚动时,这可以使视图寻呼机跳转。 尝试新市场(3.3+)从一边走到另一边,看到令人讨厌的结果! 通过扩展类来修复任何想法。我认为屏幕可能会提供奇怪的结果,当很多正在进行并可能缺少一些MotionEvent,因为我发现它几乎不可能在较新的设备上复制。 (Nexus S,三星GSII,Sensation)。 编辑:此问题已从ACL v6解决 谢谢,克里斯