Questions tagged «android-fragments»

片段代表Android应用程序中可重用的行为或部分用户界面。


2
分离片段和删除片段有什么区别?
在FragmentTransaction的Android文档中,我注意到了两个非常相似的方法:detach和remove。那里的描述似乎并未提供有关何时使用每种描述的太多见解,从我的判断看来,它们似乎是相同的。 那么:这两种方法有什么区别?


3
Android片段:何时使用隐藏/显示或添加/删除/替换?
假设我希望用另一个容器视图替换当前片段。最好使用replace ... FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.fragment_container, newFragment, null); ft.commit(); ...或以下内容,以及显示和隐藏? FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.hide(oldFragment); ft.show(newFragment); ft.commit(); 一种这样做的方式更有效吗?无法找到有关何时使用这些方法或它们如何影响所涉及片段的生命周期的大量信息。谢谢!

12
设置片段主题
我正在尝试为片段设置主题。 在清单中设置主题无效: android:theme="@android:style/Theme.Holo.Light" 通过查看以前的博客,似乎我不得不使用ContextThemeWrapper。谁能推荐我一个编码示例?我什么都找不到

5
不使用支持库的Android 4.0、4.1(<4.2)中嵌套片段的最佳实践
我正在编写适用于4.0和4.1平板电脑的应用程序,我不希望使用其支持库(如果不需要),而仅使用4.x api。 因此,我的目标平台定义为:&gt; = 4.0和&lt;= 4.1 该应用程序具有多窗格布局(两个片段,一个小片段在左侧,一个内容片段在右侧)和一个带有选项卡的操作栏。 与此类似: 单击操作栏上的选项卡将更改“外部”片段,然后,内部片段是具有两个嵌套片段的片段(1.左列表小片段,2.内容广泛的片段)。 我现在想知道替换片段(尤其是嵌套片段)的最佳实践是什么。ViewPager是支持库的一部分,此类没有本地4.x替代品。在我看来,似乎已被“弃用”。- http://developer.android.com/reference/android/support/v4/view/ViewPager.html 然后,我阅读了有关Android 4.2的发行说明ChildFragmentManager,这很适合,但我的目标是4.0和4.1,因此也无法使用。 ChildFragmentManager 仅在4.2中可用 http://developer.android.com/about/versions/android-4.2.html#NestedFragments http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager() 不幸的是,即使没有整个Android开发人员指南,也几乎没有很好的示例显示没有支持库的片段用法的最佳实践。特别是关于嵌套片段的内容。 所以我想知道:如果不使用支持库及其附带的所有内容,是否无法简单地编写带有嵌套片段的4.1应用程序?(需要使用FragmentActivity而不是Fragment等吗?) 或者最佳实践是什么? 我目前在开发中遇到的问题正是此语句: http://developer.android.com/about/versions/android-4.2.html#NestedFragments Android支持库现在还支持嵌套片段,因此您可以在Android 1.6及更高版本上实现嵌套片段设计。 注意:如果版式包含,则不能将其膨胀为片段&lt;fragment&gt;。仅当动态将片段添加到片段时,才支持嵌套片段。 因为我用XML定义了嵌套的片段,所以显然会引起如下错误: Caused by: java.lang.IllegalArgumentException: Binary XML file line #15: Duplicate id 0x7f090009, tag frgCustomerList, or parent id 0x7f090008 with another fragment for de.xyz.is.android.fragment.CustomerListFragment_ 此刻,我为自己总结:即使在4.1上,甚至当我不想针对2.x平台时,如无屏幕截图所示的嵌套片段,都没有支持库是不可能的。 (这实际上可能更多的是维基条目而不是问题,但也许以前有人管理过它)。 …


13
PreferenceFragmentCompat需要preferenceTheme设置
使用来自v7首选项支持库的新PreferenceFragmentCompat:http : //developer.android.com/tools/support-library/features.html#v7-preference,我收到此错误 E java.lang.IllegalStateException: Must specify preferenceTheme in theme E at android.support.v7.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:202) 应该设置什么主题? 更新:我尝试使用 &lt;item name="preferenceTheme"&gt;@style/PreferenceThemeOverlay&lt;/item&gt; 正如@Bogato所建议的那样,但它看起来不正确,即使在棒棒糖上也看起来很像Holo。 支持库: 本机首选项:

13
NullPointerException访问onCreate()中的视图
对于经常在StackOverflow上发布的问题,这是一个规范的问题。 我正在学习教程。我使用向导创建了一个新活动。我得到NullPointerException试图调用一个方法时,View与s的粘度findViewById()在我的活动onCreate()。 活动内容onCreate(): @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View something = findViewById(R.id.something); something.setOnClickListener(new View.OnClickListener() { ... }); // NPE HERE if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } } 布局XML(fragment_main.xml): &lt;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="packagename.MainActivity$PlaceholderFragment" &gt; &lt;View android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/something" …

17
在notifyDatasetChanged()之后,RecyclerView闪烁
我有一个RecyclerView,它从API加载一些数据,包括图像URL和一些数据,并且我使用networkImageView来延迟加载图像。 @Override public void onResponse(List&lt;Item&gt; response) { mItems.clear(); for (Item item : response) { mItems.add(item); } mAdapter.notifyDataSetChanged(); mSwipeRefreshLayout.setRefreshing(false); } 这是适配器的实现: public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) { if (isHeader(position)) { return; } // - get element from your dataset at this position // - replace the contents of the …


13
将选项卡与ViewPager一起使用时出现错误“ Java.lang.IllegalStateException活动已被破坏”
我有一个应用程序,其中包含在选项卡模式下使用ActionBarSherlock的应用程序。我有5个选项卡,每个选项卡的内容都是使用片段处理的。但是对于tab2,我有一个片段,该片段的xml文件包含一个ViewPager元素,而该元素又具有一些片段页面。最初启动应用程序时,我可以在选项卡之间进行切换,但是第二次按tab2时,出现上述错误。主要活动如下: public class MainActivity extends SherlockFragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getSupportActionBar(); ActionBar.Tab tab1 = actionBar.newTab().setText("Tab1"); ActionBar.Tab tab3 = actionBar.newTab().setText("Tab3"); ActionBar.Tab tab2 = actionBar.newTab().setText("Tab2"); ActionBar.Tab tab4 = actionBar.newTab().setText("Tab4"); ActionBar.Tab tab5 = actionBar.newTab().setText("Tab5"); Fragment fragment1 = new Tab1(); Fragment fragment3 = new Tab3(); Fragment …

14
重新加载时刷新片段
在android应用程序中,我正在将数据从Db加载到的TableView内部Fragment。但是,当我重新加载Fragment它时,它将显示以前的数据。我可以Fragment用当前数据代替以前的数据来重新填充吗?

16
如何在片段之间传递值
我对使用片段很陌生。 我只是试图构建一个使用片段的简单示例应用程序。我的情况是,我有两个活动,每个活动中都有一个片段。第一个片段具有一个edittext和一个按钮。第二个片段具有textview。当我在edittext中输入名称并单击按钮时,第二个片段中的textview应该显示在第一个片段的edittext中输入的名称。 我能够将值从第一个片段发送到其活动,然后从该活动发送到第二个活动。现在,我如何在第二个片段中使用此值。 这是Java代码::: package com.example.fragmentexample; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Fragment_1 extends Fragment{ OnFragmentChangedListener mCallback; // Container Activity must implement this interface public interface OnFragmentChangedListener { public void …

13
支持FragmentPagerAdapter保留对旧片段的引用
最新信息: 我将问题缩小为fragmentManager保留旧片段实例的问题,并且viewpager与FragmentManager不同步。请参阅此问题... http://code.google.com/p/android/issues/detail?id=19211#makechanges。我仍然不知道如何解决这个问题。有什么建议... 我已经尝试调试了很长时间,任何帮助将不胜感激。我正在使用FragmentPagerAdapter,它接受像这样的片段列表: List&lt;Fragment&gt; fragments = new Vector&lt;Fragment&gt;(); fragments.add(Fragment.instantiate(this, Fragment1.class.getName())); ... new PagerAdapter(getSupportFragmentManager(), fragments); 实施是标准的。我正在为片段使用ActionBarSherlock和v4可计算性库。 我的问题是,离开应用程序并打开其他几个应用程序并返回后,这些片段会丢失对FragmentActivity的引用(即getActivity() == null)。我不知道为什么会这样。我试图手动设置,setRetainInstance(true);但这无济于事。我认为这是在我的FragmentActivity被销毁时发生的,但是如果在收到日志消息之前打开应用程序,这种情况仍然会发生。有什么想法吗? @Override protected void onDestroy(){ Log.w(TAG, "DESTROYDESTROYDESTROYDESTROYDESTROYDESTROYDESTROY"); super.onDestroy(); } 适配器: public class PagerAdapter extends FragmentPagerAdapter { private List&lt;Fragment&gt; fragments; public PagerAdapter(FragmentManager fm, List&lt;Fragment&gt; fragments) { super(fm); this.fragments = fragments; } @Override public …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.