我需要有关片段内部片段的帮助,实际上我在按下后退按钮时遇到问题.应用主屏幕具有按钮和按下每个按钮上考虑到与新的片段替换(和该片段包含另一个片段内),动态地添加/更换片段工作正常,通过按压按钮1片段代替,按压按钮时发生同样的情况,但是,如果我按按钮再次出现异常:
"Duplicate id 0x7f05000a, tag null, or parent id 0x7f050009 with
another fragment for com........ fragmentname"
Run Code Online (Sandbox Code Playgroud)
意味着片段或内部片段已经添加,我试图再次添加它们,任何人都知道如何使用片段内部片段和来回移动没有任何问题,感谢支持.
MainActivity,其中片段是动态添加和替换的.
public class FragmentInsideFragmentTestActivity extends Activity {
private Button button1;
private Button button2;
private Button button3;
private Button button4;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 =(Button) this.findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
onButtonClick(view);
}
});
button2 =(Button) this.findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
onButtonClick(view);
} …Run Code Online (Sandbox Code Playgroud) 我正在开发针对平板电脑和谷歌电视的应用程序.它就像许多标准的Google TV应用程序一样,具有LeftNavBar和顶级搜索栏,这对所有应用程序屏幕都是通用的.它看起来像下图:
主屏幕

所有其他屏幕的RED区域将不同.它可能包含以下屏幕模型等数据:
活动一加载到主容器中

活动二加载到主容器中

因此,您可以看到主区域中可以加载完全不同的部分.
当在屏幕2中选择任何列表项时(例如在片段列表中),可以将屏幕3作为详细部分加载,或者可以在选择选项卡(将出现在LeftNavBar中)时加载它.
这是我试图实现它的方式.
步骤1.我使用以下XML创建了一个主Activity:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#9ccc" >
<!-- Top Bar -->
</LinearLayout>
<FrameLayout
android:id="@+id/mainContainer"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<!-- main Red Container that will load other Activities -->
</FrameLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
mainContainer是我想要加载活动的RED容器.LeftNavBar将作为All的父级添加到此Activity中.
步骤2我创建ActivityOne&ActivityTwo与它们两个分别与三个片段(如在上面第二和第三图像示出).
*步骤3我正在尝试加载ActivityOne主页面的mainContainer FrameLayout ......但是我无法添加它.
我试图通过添加ActivityOne到mainContainer如下:
View v = (new ActivityOne()).getWindow().getDecorView();
FrameLayout mainContainer = (FrameLayout) findViewById(R.id.mainContainer);
mainContainer.addView(v); …Run Code Online (Sandbox Code Playgroud) 我已经读过应该避免嵌套碎片(例如这里),但我看不到如何做以下事情:
我正在android:minSdkVersion="12"使用以下UI处理选项卡应用程序():

搜索栏始终在此处,用户可以浏览多个菜单选项("主页","图库"...).我的想法是使用BaseActivity,其布局包含搜索栏和FrameLayout,我将在其中加载与用户导航选项对应的Fragment.
我的问题是在'Home'片段中我有几个标签,我想以相同的方式实现,即使用包含标签栏和FrameLayout的布局,我将在其中加载相应的片段,这导致嵌套的片段...
我知道我可以使用多个活动而不是BaseActivity,并在每个布局中包含搜索栏,但每次用户更改活动时它都会显示和消失...
编辑
我还需要一个固定的页脚,所以我不能使用CommonsWare在他的回答中提出的操作栏.
有人可以帮忙吗?
使用SherlockActionBar,我创建了一个很好的界面.在横向模式中,您会看到listfragment和"detailsfragment".
现在我想在详细信息框架中添加一个viewpageindicator(https://github.com/JakeWharton/Android-ViewPagerIndicator),所以我看起来像这样:
--------------------------|
|_1___|TAB1 | TAB2 | ETC |
|_2___|-------------------|
|_3___|Example: content |
|_4___| TAB1 of listitem 1|
|_5___|___________________|
Run Code Online (Sandbox Code Playgroud)
我希望这很清楚.基本上我会在片段内部使用FragmentManager/TabPageIndicator.
我有可能吗?我想不出来.. :(
谢谢!
我想将youtube片段动态添加到我现有的片段中。我使用的代码如下:
// setting the Youtube Player Dynamically
private int setYoutubePlayer(String desc, View view, int prevID,
Bundle input) {
if (desc.indexOf("=") != -1) {
desc = desc.substring(desc.indexOf("=") + "=".length());
} else {
return prevID;
}
final String url = desc;
LinearLayout videoLayout = new LinearLayout(view.getContext());
videoLayout.setOrientation(LinearLayout.VERTICAL);
prevID++;
videoLayout.setId(prevID);
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragment.setVideoId(url);
LinearLayout itemLayout = (LinearLayout) view.findViewById(R.id.items);
itemLayout.addView(videoLayout);
fragmentTransaction.add(itemLayout.getId(), fragment,
"youtube fargment " + prevID);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
return prevID;
}
Run Code Online (Sandbox Code Playgroud)
我需要将YouTube片段放入适当的片段中。当我检查何时总是加载新片段时(在片段之间滑动时),新的内部片段需要是第一个加载的片段。
任何帮助都会很高兴地被接受。
求助:谢谢科比,你是对的。我不得不替换“ getActivity()。getSupportFragmentManager();” 与“ …
android youtube-api android-fragments android-viewpager android-nested-fragment
所以我正在开发一个我希望在传统Android设备上运行的项目,所以我使用的是兼容性库.我使用的是类似于NewsReader的接口,只是代替Activity中的两个片段,它们嵌入在另一个嵌入ViewPagger的片段中.
为简单起见,我们将使用这些术语......
Activity -> ViewPager -> ContainerFragment->Fragment1
->Fragment2
Run Code Online (Sandbox Code Playgroud)
在ContainerFragment中我试图用片段2替换片段1,如果它是一个电话,所以我在ContainerFragment中尝试了以下代码...
import android.support.v4.app.FragmentTransaction;
...
public void onBarSelected(Integer index) {
selectedBarIndex = index;
if (isDualPane) {
// display it on the article fragment
mBarEditFragment.displayBar(index);
}
else {
// use separate activity
FragmentActivity activity = (FragmentActivity)getActivity();
FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
ft.replace(R.id.bar_container, new BarEditFragment(),R.id.bar_edit);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我得到以下编译错误
Type mismatch: cannot convert from android.app.FragmentTransaction
to android.support.v4.app.FragmentTransaction
Run Code Online (Sandbox Code Playgroud)
我仔细检查了一下,活动确实扩展了兼容性FragmentActivity.
UPDATE
试图改为......
得到....
MainActivity activity = (MainActivity)getActivity();
Object test = activity.getFragmentManager().beginTransaction();
FragmentTransaction ft = (FragmentTransaction)test;
ft.replace(R.id.bar_container, new BarEditFragment());
Run Code Online (Sandbox Code Playgroud)
我得到了...... …