Articles of android fragments

在ViewPager中,在滑动到第3个选项卡时,tab1中的子片段消失

我在FragmentStatePagerAdapter中有3个选项卡。 我有一个标签1的片段,它动态地在相对布局中为其’linearlayout’容器添加视图。 我在tab 1片段中动态添加一些视图。 我还在该linearLayout容器中添加了一个完整的片段,其中包含其他视图。 这很好..每件事都很好。 但是当我去第3页然后回来。 所有观点都在那里。 但那个完整的片段消失了~~ 编辑 它从tab1消失,并出现在tab2中的视图下方,其中添加了另一个子片段。 首先,我在tab1和tab2中有一个listFragment。 基于listItem单击我在每个选项卡中加载一个片段,tab1和2中的两个片段在xml下面膨胀相同并添加动态视图,但在某些情况下,我在xml中给出的线性布局中添加一个完整的片段而不是视图。 当我必须在选项卡1和tab2中的两个新添加的片段中添加两个片段之后,只有列表,并滑动到tab3时出现问题。 回来了。 ‘tab1主片段’中的片段消失并出现在’tab2主片段’中的片段下方 这是viewpager,我通过方法setItem(片段,位置)更改不同的片段: public static class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { public static ArrayList tabs_fragments = new ArrayList( 3); public ScreenSlidePagerAdapter(FragmentManager fm, ArrayList tabs) { super(fm); ScreenSlidePagerAdapter.tabs_fragments = tabs; } @Override public Fragment getItem(int arg0) { return tabs_fragments.get(arg0); } @Override public int […]

重新创建()活动时,碎片不会被破坏

我有一个支持库片段,它发送网络调用,并在收到特定网络响应时recreate()父活动。 我可以看到活动确实被重新创建,因为我可以看到onCreate()和onDestroy()被调用。 但是在重新创建活动之后,片段仍然存在,并且它被卡在一个循环中,这个循环不断重新创建并创建新片段。 这是活动的onCreate()的一部分: if (someLogic()) { fragmentA = new FragmentA(); FragmentUtil.addFragment(getSupportFragmentManager(), fragmentA); } else { fragmentB = new FragmentB(); FragmentUtil.addFragment(getSupportFragmentManager(), fragmentB); } FragmentA是进行网络调用的那个,FragmentB是应该在recreate()之后显示的片段。 当我使用getSupportFragmentManager().getFragments()检查片段列表时,我看到1个FragmentA实例和16个FragmentB实例。 我的问题是为什么会发生这种情况,我该如何解决?

在相同片段的不同实例之间进行通信

问题如下。 让我们有3个带片段的标签: 标签1(片段A)。 需要将数据发送到选项卡2。 表2(片段B)。 需要从选项卡1接收数据。 表3(片段B)。 已经包含数据。 如您所见,选项卡3和选项卡2包含相同的片段但不同的实例。 如何将数据(不是通过参数)发送到Tab 2? 我尝试过的: 片段B在创建时通过参数设置唯一ID。 为片段B的两个实例注册相同的Local Broadcast Receiver 使用ID将数据从片段A发送到片段B. 在Fragment B onReceive()检查接收的ID是否等于Fragment的ID 但不幸的是,广播仅被发送到Tab 3。 编辑:更多信息。 这些选项卡使用ViewPager托管在另一个片段中。 这是由于NavigationDrawer组合,其中包含与ViewPager片段和提到的Tabs。

区域设置:未调用onConfigurationChanged

我希望我的语言动态更改,我正在尝试使用onConfigurationChanged但它没有被调用。 我有一个MainActivity,可以创建我的操作栏和viewpager。 我的其余页面都是碎片。 在我的SettingsFragment中,我有一个按钮可以将语言切换为法语。 langChange.setOnClickListener(new OnClickListener() { @Override public void onClick(View vi) { MainActivity main = (MainActivity)getActivity(); main.langChange(); } }); 然后在我的MainActivity中 @Override public void onConfigurationChanged(Configuration newConfig){ super.onConfigurationChanged(newConfig); if (locale != null){ newConfig.locale = locale; Locale.setDefault(locale); getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics()); } } public void langChange(){ if(currentLanguage == FRENCH_LANGUAGE){ locale = new Locale(“en”); Locale.setDefault(locale); Configuration c = getBaseContext().getResources().getConfiguration(); c.locale […]

RecyclerView.Adapter的onCreateViewHolder方法中的parent.getContext

我有一个附加到我的MainActivity的自定义片段。 片段的布局文件包含recyclerview小部件。 fragment_main.xml: 在我的RecyclerView.Adapter中,onCreateViewHolder方法如下所示: @Override public MyAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout .list_item, parent, false); return new MyHolder(view); } 我的问题是关于此方法的Viewgroup父级。 这个ViewGroup是我的RecyclerView小部件,但为什么给我parent.getContext引用我的MainActivity而不是我的片段?

Butter Knife @bind in Fragment错误

我按照网站上的说明操作: http : //jakewharton.github.io/butterknife/ error:java.lang.RuntimeException:无法启动活动ComponentInfo。 java.lang.RuntimeException:无法绑定com.project.myapp.OneFragment的视图。 我尝试删除@Bind(R.id.btnNext) Button btnNext; 并且没有运行错误。 public class OneFragment extends Fragment { @Bind(R.id.btnNext) Button btnNext; private static final String ARG_PARAM1 = “param1”; private static final String ARG_PARAM2 = “param2”; private String mParam1; private String mParam2; private OnFragmentInteractionListener mListener; public OneFragment() { // Required empty public constructor } public static OneFragment newInstance(String […]

使用Backstack时TabLayout ViewPager不加载

我在我的一个片段中使用TabLayout,并使用viewPager在标签下方的两个片段之间切换。 当我单击其中一个较低片段中的FAB时,我会加载一个新片段(用于输入)。 但是 – 当我按下BACK按钮时,TabLayout会显示但没有任何一个较低的片段(由页面表示)。 那么我做错了什么? 是否有更好的方式来交换片段 ? 有没有办法按后退按钮并返回到正在显示的viewPager页面? 使用TabLayout的片段:CustomTemplatesFragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_custom_templates, container, false); final TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout); tabLayout.addTab(tabLayout.newTab().setText(R.string.macro_tab)); tabLayout.addTab(tabLayout.newTab().setText(R.string.lifestyle_tab)); tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); final ViewPager viewPager = (ViewPager) view.findViewById(R.id.pager); final CustomTemplatesPagerAdapter adapter = new CustomTemplatesPagerAdapter (getFragmentManager(), […]

为什么在使用WebView的Fragment中不会显示软键盘

我正在使用兼容包,我有一个Fragment ,它在onCreateView中返回一个WebView 。 问题是如果在Activity onCreate期间没有添加片段,那么当在WebView内部单击文本框时,不会显示软键盘。 如果在添加自定义Web片段后旋转设备,则重新创建活动,然后在单击文本字段时显示软键盘。 只是要清楚以下是两种不同的情景 public void onCreate(Bundle state){ if(state == null){ WebFragment web = new WebFragment(); getSupportFragmentManager.beginTransaction().add(android.R.id.content, web).commit(); } } public void onClick(View v){ WebFragment web = new WebFragment(); getSupportFragmentManager.beginTransaction().add(android.R.id.content, web).commit(); } 在第一种情况下,在Activity onCreate方法中添加片段时,片段中包含的WebView在按下文本字段时应该正常工作。 但是,在第二个示例中,单击Web视图中的文本字段时没有任何反应,除非在显示webview后旋转设备。 有人可以提供一个解决方案,如果我必须创建一个新的活动让我的片段正常工作它首先击败片段的目的。

在fragment中调用时,getTag()始终返回null

我有一个问题,因为当我在片段中调用它时,getTag()方法返回null,这是我创建的ViewPager选项卡布局的一部分。 码 import java.util.ArrayList; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.Toast; public class HistoryFragment extends Fragment { ListView listView; HistoryAdapter adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View history = inflater.inflate(R.layout.fragment_history, container, false); ArrayList arrayOfData = new ArrayList(); adapter = new HistoryAdapter(getActivity().getBaseContext(), […]

为什么Android Studio告诉我使用getSupportActionBar()而不是getActionBar()?

只需添加一个非常简单的帮助活动(只是从资源文件中显示一段HTML文本)到一个非常简单的测试应用程序,在这个新的Android Studio 0.8.6测试版中,我收到以下警告,没有提供理由/理由: 有谁知道为什么? 还有任何文档,因为Android Studio没有提供,也无法在Android网站上find任何特定的内容。 如果有警告的理由,有人可以指出一个完整的例子,因为这个类几乎是完全通用的/大多数例子围绕例如 public class HelpActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_help); ActionBar actionBar = getActionBar(); actionBar.setTitle(getString(R.string.action_help)); TextView helpText = (TextView) findViewById(R.id.help_text); helpText.setText(Html.fromHtml(getString(R.string.help_markup))); } }