我正在尝试制作一个在片段中具有ViewPager的应用程序,该片段是TabHost的一部分.
一切都很好.我有我的tabbar,我可以切换标签.当我使用ViewPager切换到选项卡时,所有内容都正确显示.但是,只要我将此选项卡与ViewPager一起退出并返回此选项卡,我的内容就不会显示.如果我滚动到两侧,我会看到我的下一张图像.如果我回去两次,我也会看到图像被加载(可能是屏幕加载的)当我返回时我看到我的TabFragment正在重新实例化,但ViewPager中的片段却没有.
我已经包含了一个屏幕样机和一些代码.
有人可以帮忙吗?
干杯!
@Override
public void onActivityCreated(Bundle savedInstanceState) {
mProjectText = (TextView) getView().findViewById(R.id.projectText);
mProjectText.setText(mActiveProject.getInspirationText());
mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
mPager = (ViewPager)getView().findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
super.onActivityCreated(savedInstanceState);
}
public class AlbumAdapter extends FragmentStatePagerAdapter {
private ArrayList<ProjectContent> mItems;
public AlbumAdapter(FragmentManager fm, ArrayList<ProjectContent> items) {
super(fm);
this.mItems = items;
}
@Override
public Fragment getItem(int position) {
return AlbumContentFragment.newInstance(mItems.get(position));
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}}
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager android-nested-fragment
我有一个Fragment FR1包含几个Nested Fragments; FRa,FRb,FRc.这些Nested Fragments都是按改变Buttons上FR1的布局.每个Nested Fragments都有几个输入字段; 其中包括像EditTexts,NumberPickers和Spinners.当我的用户经历并填写所有值时Nested Fragments,FR1(父片段)有一个提交按钮.
那么我怎样才能从我的Nested Fragments身上找回我的价值并将其带入FR1.
Views都在每个中声明并以编程方式处理Nested Fragment.Fragment,FR1处理交易Nested Fragments.我希望这个问题足够清楚,我不确定是否需要发布代码,但如果有人不这样认为我可以这样做.
编辑1:
这是我添加我的方式Nested Fragments:
tempRangeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getChildFragmentManager().beginTransaction()
.add(R.id.settings_fragment_tertiary_nest, tempFrag)
.commit();
}
});
scheduleButton.setOnClickListener(new View.OnClickListener() {
@Override …Run Code Online (Sandbox Code Playgroud) android parameter-passing android-fragments android-nested-fragment
我需要在一个片段中放置一个ViewPager,但我有两个片段,片段1是我的菜单,片段2我想用作ViewPagerIndicator.
但是片段不能有另一个片段......我需要做些什么呢?

android android-fragments android-viewpager android-nested-fragment
我有一个主要的活动,这里是片段活动我在B片段中设置两个片段A和B两个片段当用户点击按钮时我有一个按钮我想将片段B更改为片段C.但是上面的标签是可见的......
如何在标签内实现替换片段?
非常感谢任何解决方案.
android android-tabhost android-fragments fragment-tab-host android-nested-fragment
我想创建一个ViewPager(有三个项目),其中每个视图是另一个ViewPager(有两个项目).用户然后滑动这样的项目:
ViewPager1[0] ViewPager2[0]
ViewPager1[0] ViewPager2[1]
ViewPager1[1] ViewPager2[0]
ViewPager1[1] ViewPager2[1]
ViewPager1[2] ViewPager2[0]
ViewPager1[2] ViewPager2[1]
Run Code Online (Sandbox Code Playgroud)
怎么可能呢?
android swipe swipe-gesture android-viewpager android-nested-fragment
我试图显示一个FragmentDialog(创建并显示为一个未添加为视图层次结构中的内容的对话框),其中有一个ViewPager,其内容由FragmentPagerAdapter给出(提供由图像组成的片段).
从FragmentActivity显示ViewPager + FragmentPagerAdapter时,代码非常完美,但从FragmentDialog执行此操作时会出现以下异常:
"IllegalArgumentException:找不到片段SimpleFragment的id 0x7f040077的视图......"
这是我的代码:
一个SherlockFragmentActivity,带有一个按钮,用于创建和显示对话框.
public class BorrameActivity extends SherlockFragmentActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.one_act);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
showTheDialog();
}});
}
private void showTheDialog(){
AchGalleryDialog newFragment = AchGalleryDialog.newInstance(achs);
newFragment.show(getSupportFragmentManager(), "dialog");
}
Run Code Online (Sandbox Code Playgroud)
FragmentDialog:
public class AchGalleryDialog extends DialogFragment{
public AchGalleryDialog(){
}
public static AchGalleryDialog newInstance(){
AchGalleryDialog f = new AchGalleryDialog();
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentpageradapter android-nested-fragment
我有Fragment一个FrameLayout.该第一个片段(A)在其Framelayout内加载另一个片段(B).当我getParentFragment从内部片段(B)调用时,我得到了null.该方法应该如何正确使用?
是否有可能坚持Fragment另一个的布局Fragment?有没人试过这个?
如何使用(或"我们可以使用")getChildFragmentManager()以编程方式(动态)添加Fragments?
这是我的例子.
我有一个MainActivity,一个OuterFrag和一个InnerFrag.我将动态添加OuterFrag到.而且,我还将动态添加到.但我想完全添加一个孩子,而不是替换,并成为新的孩子.MainActivityFragmentManagerInnerFragOuterFragFragmentManagerInnerFragOuterFragOuterFragMainActivity
我想保持这种等级制度:MainActivity -> OuterFrag -> InnerFrag.所以MainActivity总是可以调用OuterFrag.
但是不要从这个层次结构改变:MainActivity -> OuterFrag到这个层次结构:MainActivity -> InnerFrag这MainActivity将失去OuterFrag.
这是我的示例代码.
MainActivity.java
package com.example.frag;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager().beginTransaction().add(R.id.frameLayout, new OuterFrag()).commit();
getSupportFragmentManager().executePendingTransactions();
System.out.println("Before: "
+ getSupportFragmentManager().findFragmentById(R.id.frameLayout));
((OuterFrag) getSupportFragmentManager().findFragmentById(R.id.frameLayout))
.addInnerFrag();
System.out.println("After: "
+ …Run Code Online (Sandbox Code Playgroud) getParentFragment()来自我的嵌套片段的A 返回一个null.我意识到获得一个null意味着片段附加到活动而不是嵌套容器片段.但我明确地使用孩子将子片段嵌套在父片段中FragmentManager,因此认为我不应该得到一个null.你能告诉我我错过了什么吗?
父片段
public class UsageBreakUp extends Fragment implements Filter.OnFragmentInteractionListener {
....
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getChildFragmentManager().beginTransaction().add(R.id.filter, new Filter()).commit();
}
...
}
Run Code Online (Sandbox Code Playgroud)
儿童片段
public class Filter extends Fragment {
...
public Filter() {
if (getParentFragment() == null)
Log.d(LOG_TAG, "parent fragment is null");
}
...
}
Run Code Online (Sandbox Code Playgroud)