Articles of android fragments

findFragmentByTag()在使用replace()方法执行FragmentTransaction之后返回null

我的Android应用程序包含三个片段:A,B和C. 它们被加载到MainActivity布局中定义的两个容器中。 当应用程序启动时,它显示在left_container中加载的fragmentA和在right_container中的fragmentC 。 如果按下fragmentA中的button, FragmentTransaction将通过FragmentB更改FragmentC 。 目前一切正常。 但是,当我尝试使用 findFragmentByTag() 获取对加载的fragmentB的引用时出现问题 ,因为它返回null 。 我已经使用了FragmentTransaction的方法replace,我用commit()完成了,但是没办法调用FragmentB方法。 我的代码: MainActivity.java: public class MainActivity extends Activity{ static String fragmentTag = "FRAGMENTB_TAG"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Adds the left container's fragment getFragmentManager().beginTransaction().add(R.id.left_container, new FragmentA()).commit(); //Adds the fragment A to the left container //Adds the right container's fragment […]

button监听器在android中的片段button

我是Android新手,并试图自己学习。 但是我对片段有一段艰难的时光。 我正在创build一个简单的应用程序来学习片段。 我认为这可能看起来很愚蠢,但我真的无法得到这个工作。 我想要做的就是点击Fragment_One中的一个button(buttonSayHi),Fragment_One应该被Fragment_Two取代。 我不知道何时调用Fragment代码,以及在哪里写代码来调用第二个片段。 我收到错误:无法启动活动组件。 但是,如果我丢弃button的侦听器,并且活动中显示片段,代码工作正常。 我已经做了大量的研究,阅读了developer.android.com上的片段教程以及Lars Vogella的教程。 我认为我的概念不清楚。 任何帮助将不胜感激。 以下是代码: activity_main.xml中 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/frameLayoutFragmentContainer" android:layout_width="fill_parent" android:layout_height="fill_parent" > </FrameLayout> fragment_one.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/editTextPersonName" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" > <requestFocus /> </EditText> <Button android:id="@+id/buttonSayHi" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Say Hi" android:onClick="onButtonClicked"/> </LinearLayout> fragment_two.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" […]

以编程方式隐藏ViewPager.OnPageChangeListener onPageSelected()中的软键盘?

我有一个带有标签的ViewPager + ActionBar。 我想让软键盘隐藏,当我“滑动”到另一个选项卡,但我不知道如何。 我已经将我的Activity传递给了FragmentPageAdapter的构造函数,所以我可以调用它 activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 但它没有做任何事情(它是在代码可到达的地方)…帮助?

Android Activity ClassNotFoundException – 尝试了一切

我刚刚重构了一个应用程序到一个框架库和一个应用程序,但现在当我尝试在模拟器中启动应用程序,我得到以下错误堆栈跟踪: 06-02 18:22:35.529: E/AndroidRuntime(586): FATAL EXCEPTION: main 06-02 18:22:35.529: E/AndroidRuntime(586): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.matthewrathbone.eastersays/com.matthewrathbone.eastersays.EasterSimonSaysActivity}: java.lang.ClassNotFoundException: com.matthewrathbone.eastersays.EasterSimonSaysActivity in loader dalvik.system.PathClassLoader[/data/app/com.matthewrathbone.eastersays-1.apk] 06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 06-02 18:22:35.529: E/AndroidRuntime(586): at android.os.Handler.dispatchMessage(Handler.java:99) 06-02 18:22:35.529: E/AndroidRuntime(586): at android.os.Looper.loop(Looper.java:123) 06-02 18:22:35.529: E/AndroidRuntime(586): at […]

如何处理多片段活动中的onContextItemSelected?

我目前正试图使我的应用程序使用“适用于Android v4的兼容性库”,甚至为Android 1.6用户提供片段使用的好处。 上下文菜单的实现似乎很棘手: 应用程序的主要活动是扩展FragmentActivity类。 这些片段都是基于扩展片段类的一个类。 片段类在其onCreateView()方法中调用registerForContextMenu() ,并覆盖onCreateContextMenu()和onContextItemSelected()方法 。 对于onCreateContextMenu(),这工作得很好。 上下文菜单从资源文件中膨胀,并根据所选项目(基于listView …即使片段不是ListFragment)稍作修改。 select上下文菜单项时会发生此问题。 为所有当前存在的片段调用onContextItemSelected() ,从第一个添加的片段开始。 在我的情况下,片段是用来显示文件夹结构的内容。 当打开一个子文件夹片段的上下文菜单并select一个菜单项时, onContextItemSelected()首先在上层被调用(这取决于在这一刻允许/可见的片断数量)。 现在,我通过活动级别的字段使用一个解决方法,该字段包含调用其onCreateContextMenu()的最后一个片段的标记。 这样,当存储标记与getTag()不相同时,我可以在onContextItemSelected()的开头调用“return super.onContextItemSelected(item)”。 但是这种方法对我来说看起来有点肮脏。 为什么onContextItemSelected()在所有片段上调用? 而不只是一个调用onCreateContextMenu() ? 什么是最优雅的方式来处理这个?

渲染期间引发的exception:二进制XML文件行#-1:错误膨胀类<未知>

我试图在布局中包括checkbox,并拖放后,我得到这个错误: 渲染期间引发的exception:二进制XML文件行#-1:错误膨胀class<unknown> 。 xml文件: <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.nidhigupta.shopping2.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/textView" /> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New CheckBox" android:id="@+id/checkBox" android:layout_below="@+id/textView" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout> 请提供一步一步的解决scheme。 细节链接说: java.lang.NoSuchMethodError: android.graphics.drawable.VectorDrawable_Delegate.nCreateTreeFromCopy(JJ)J at android.graphics.drawable.VectorDrawable.nCreateTreeFromCopy(VectorDrawable.java) at android.graphics.drawable.VectorDrawable.access$400(VectorDrawable.java:204) at android.graphics.drawable.VectorDrawable$VectorDrawableState.createNativeTreeFromCopy(VectorDrawable.java:837) at android.graphics.drawable.VectorDrawable$VectorDrawableState.<init>(VectorDrawable.java:812) at android.graphics.drawable.VectorDrawable.mutate(VectorDrawable.java:268) at android.graphics.drawable.DrawableContainer$DrawableContainerState.addChild(DrawableContainer.java:817) at android.graphics.drawable.StateListDrawable$StateListState.addStateSet(StateListDrawable.java:329) at android.graphics.drawable.AnimatedStateListDrawable$AnimatedStateListState.addStateSet(AnimatedStateListDrawable.java:602) at […]

Android获取FragmentPagerAdapter中的片段

我有以下问题:我有一个活动,其中我有两个选项卡,使用FragmentPagerAdapter作为片段在一段时间,我想改变其中一个片段的视图,但我无法findFragmentById()或findFragmentByTag( )我无法设置ID,因为我没有在XML中声明片段,因为FragmentPagerAdapter而当我试图设置标签时,我得到以下问题: 08-15 21:46:23.805: E/AndroidRuntime(9297): java.lang.IllegalStateException: Can't change tag of fragment Companies{416d7b78 id=0x7f04002e companies}: was companies now android:switcher:2130968622:1 我的分页器FragmentPagerAdapter的代码: public class TabsAdapter extends FragmentPagerAdapter implements ActionBar.TabListener, ViewPager.OnPageChangeListener { private final FragmentActivity mContext; private final ActionBar mActionBar; private final ViewPager mViewPager; private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); final class TabInfo { private final Class<?> clss; […]

加载第一个Fragment后,ViewPager调用setUserVisibleHint

在我的应用程序中,我有一个ViewPager,里面包含了许多带有碎片的可滑动Tab。 我使用setUserVisibleHint方法来检测Fragment何时进入屏幕。 当用户在选项卡之间滑动时这很好用,但在第一次加载时不起作用。 要运行方法中的代码,我必须向左滑动,然后回到第一个Fragment因为在onCreateView方法之前调用了setUserVisibleHint方法。 在第一个Fragment可见之后,你有什么想法可以运行这段代码吗? ViewPager还有其他的方法吗?

Android:编写片段testing用例

在我以前的项目中,我通过“活动”完成了大部分工作,并根据文档使用了ActivityInstrumentationTestCase2: http://developer.android.com/tools/testing/activity_testing.html 我有一个想法如何使用活动testing案例; 但是就片段而言,我没有太多的想法,也没有find太多相关的文件。 那么如何编写testing用例,当我有几个片段与一个或两个actvities? 任何示例代码或示例都会更有帮助。

如何禁用android地图标记点击自动中心

我正在寻找一种方法来禁用我select的标记function的地图片段的自动中心。 我仍然希望标记InfoWindow显示出来,但是不要将整个地图放在我select的标记上。