Articles of android fragments

getParentFragment API 16

我们都知道Fragment getParentFragment是在API 17中引入的。 那么如果我们想在API 16及更低版本中获取父片段呢(考虑到我使用支持FragmentStatePagerAdapter本机FragmentStatePagerAdapter并且嵌套片段没有问题) 还有比我更好的方法吗? 在父母: public class ParentFragment extends Fragment { public static ParentFragment StaticThis; … @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { super.onCreate(savedInstanceState); StaticThis = this; … } 在孩子: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) parentFragment = (ParentFragment) getParentFragment(); else parentFragment = ParentFragment.StaticThis;

窗口软输入模式ConstraintLayout

早期软输入模式没有问题,但在包含ConstraintLayout ,当键盘出现时,片段内容不会向上移动。 表现 分段 public class AuthFragment extends Fragment implements ValidationListener { private static final String TAG = AuthFragment.class.toString(); // UI references. @NotEmpty @Email @BindView(R.id.email) EditText email; @NotEmpty @BindView(R.id.password) EditText password; @BindView(R.id.auth_sign_in) Button signIn; @BindView(R.id.remember_me) CheckBox remember; @BindView(R.id.forgot) TextView forgot; @BindView(R.id.error) TextView errorField; @Inject @ApplicationContext Context context; private Validator validator; private onAuthenticateEventListener authenticatableEventListener; private String […]

带有片段的Android应用程序的JUnit测试

我的Android应用程序是基于Single Activity,基于多个片段的模型构建的。 我需要为应用程序进行unit testing。 我可以为app编写unit testing用例,其中包含使用ActivityInstrumentationTestCase2 JUnit的所有活动,但不包含包含片段的app。 请建议为片段编写JUnit测试用例的方法。 谢谢

在Cordova 4.0上的Android Fragment中的Cordova webview

我刚刚升级到cordova 4.0 for android。 我使用以下post在片段中加载cordova webview .. https://github.com/Adobe-Marketing-Cloud-Apps/app-sample-android-phonegap/wiki/Embed-Webview-in-Android-Fragment 从3开始升级到cordova 4.0后,此代码不再有效。* 具体来说,这个第二行有例外…… LayoutInflater localInflater = inflater.cloneInContext(new CordovaContext(getActivity(), this)); View v = localInflater.inflate(R.layout.dialog_webview, container, false); 这个标签在我的布局文件中… exception消息…… android.view.InflateException:二进制XML文件行#43:类不是View org.apache.cordova.CordovaWebView 有没有人对如何解决这个问题有任何想法? 看起来好像自Cordova 4.0以来,CordovaWebView类已经改变了…… public class CordovaWebView extends WebView 至 public interface CordovaWebView

突然在CoordinatorLayout Android内的ViewPager Fragment中使用NestedScrollView滚动

我在CoordinatorLayout ViewPager的主要滚动问题。 当前场景: app:appbarScrollingViewBehaviour在ViewPager上ViewPager 。 ViewPager片段将NestedScrollView作为其根父级。 片段布局包含Horizo​​ntal RecyclerView 。 当我通过触摸RecyclerView向上滚动时,应用栏不会滚动,而只会发生嵌套滚动。 当我通过触摸视图的其余部分滚动时, CoordinatorLayout滚动。 6)嵌套滚动也在中途停止并切断内容。 我已经尝试过了: 将ViewPager放在NestedScrollView并将app:appbarScrollingViewBehaviour属性设置为NestedScrollView 。 这完全切断了片段内容,因为RecyclerView无法确定其高度。 在RecyclerView上设置setAutoMeasureEnabled(true) ,仍然无法修复高度。 还有很多其他方法。 请帮助解决这个问题。 在上传的.gif文件中可以看到当前行为。 我还发布了活动布局和片段布局以及RecyclerView行布局的代码。 谢谢 activity.xml: pager_fragment.xml: <!– –>

如何使用非常深的导航编写Android多窗格应用程序

TL; DR:具有类似Spotify iPad应用程序的深度导航的多窗格应用程序应该如何在Android上运行,以及如何实现这一点? 长版本:我正在开发一个应用程序,用户可以看到项目列表,然后可以深入研究这些项目。 这些项目详细信息页面可以再次打开相关项目的列表,这些项目又包含详细信息页面等。 作为一个手机应用程序,这些将是可能看起来和链接到彼此的单独活动,如下所示: 在模型中,用户看到初始概览,然后从第一个列表中选择“项目#2”。 将打开一个新活动,向他显示第2项的详细信息。 在这里,他选择查看与项目#2相关的事物列表。 第三张图片中新开放的活动显示了这个列表,点击一个打开了这个东西的详细信息。 他可以根据自己的喜好深入浏览内容。 这通常适用于通常的Android活动。 我正在努力将应用程序带到平板电脑,并正在考虑如何最好地实现这一点。 计划是创建具有相同概念的多窗格布局。 它与iPad Spotify应用程序的工作方式非常相似(一旦创建特定于平板电脑的布局,它们将如何将其带入Android将会很有趣)。 在平板电脑布局中,每次单击项目或列表名称都会打开相应的子项目,作为从右侧激活的新窗格。 与上例中相同的工作流程如下所示: 我不确定如何最好地实现这种导航模式。 具有有限导航深度的多窗格应用程序(如GMail)可以使用包含所有片段的静态ViewGroup(LinearLayout可以)构建,并且深入导航会将下一个容器的内容替换为右侧,并为此设置animation(请参阅CommonWares在SO )上的实现。 这表明自定义ViewGroup将是最佳选择。 如果必须显示子页面(即“事物列表”),则它在ViewGroup中创建一个新子节点,该子节点是带有片段的屏幕的一半,然后滚动可见区域,以便刚刚与之交互的窗格并且新的孩子是可见的。 要正确地将其链接到FragmentTransaction,以便后端堆栈正常工作,我猜它会是这样的: View newPane = container.addChild(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.add(newPane, new ListOfThingsFragment(2)); ft.remove(paneOnRight, fragmentOnRight); ft.commit(); container.animateToRight(); 我没有看到在FragmentTransaction中做animation的方法。 欢迎反馈。 我的雇主对我们开发的开放式采购框架总体上是有利的,所以如果这是一个更广泛的兴趣,如果我能提出一个可重复使用的解决方案,我很乐意分享它。

ZXing条码扫描器在片段中自定义布局

我在Android Studio上按照此页面开发了ZXing条形码连续扫描仪。 我的应用build.gradle包括: repositories { mavenCentral() maven { url “https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/” } } dependencies { compile fileTree(include: [‘*.jar’], dir: ‘libs’) compile ‘com.android.support:appcompat-v7:23.0.1’ compile files(‘src/main/jniLibs/scanditsdk-android-4.7.5.jar’) compile files(‘src/main/jniLibs/httpclient-4.0.jar’) compile ‘com.journeyapps:zxing-android-embedded:3.0.3@aar’ compile ‘com.google.zxing:core:3.2.0’ } 我的Fragment.xml的布局: 然后,我的Fragment代码如下所示: public class CMCSMOFragment extends Fragment implements View.OnClickListener { private CompoundBarcodeView barcodeView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (container […]

如何在ADT中创建新应用程序的开始时删除片段布局?

在Android Developer Tools的最新更新之后,每当我创建一个新项目时,我都会面临一个问题。 它迫使我创建一个fragment_layout.xml 。 所以在hello world程序中有太多的代码。 但在之前的版本中只出现了MainActivity.java和activity_main.xml 。 有没有办法只删除MainActivity.java的fragment_main.xml和额外代码。 一种方法是在开头取消标记创建活动部分,但它也不会创建MainActivity.java 。

在导航抽屉项目上启动新活动单击

我知道这是一个经常被问到的问题,但在阅读了关于堆栈溢出的许多问题和解决方案后,我很困惑。 我对Fragments以及通过单击导航抽屉中的项目启动活动所需的内容感到困惑。 我已经检查了这些post,但只是混淆了Q1 , Q2 有人可以解释从这个导航抽屉项目开始基本活动所需的内容吗? 我是否需要在代码中指定的onClick方法实现? 这又与Intent有什么关系? 这是我的MainActivity.java import android.content.res.Configuration; import android.os.Bundle; import android.support.design.widget.NavigationView; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends AppCompatActivity { DrawerLayout drawerLayout; ActionBarDrawerToggle drawerToggle; NavigationView navigation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initInstances(); } private void initInstances() { getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); drawerLayout = […]

支持库v13中的getChildFragmentManager在哪里?

Android支持库v13应该为Android 3.1中的新API提供支持。 但是,据我所知,没有儿童片段的支持。 具体来说,getChildFragmentManager()在哪里? v13支持库依赖于本机片段,在API级别17之前没有添加此方法。我有一个最低SDK级别14的应用程序,所以我应该能够使用v13支持库,但似乎我不能。 我不想一直回到v4支持库并承担它的全部重量。 v13库是完美的。