android局部布局替换,android – 用fragment和framelayout替换另一个片段和framelayout的布局...

编辑:

所以在下面的评论之后,我重新审视并意识到是什么让我失望.

想象一下,我的客户列表和客户详细活动可以通过以下方式启动

public class ClientsMainActivity extends FragmentActivity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//StudioTabOpenHelper db;

setContentView(R.layout.main_client_activity);

}

}

所以这很好用,启动我的main_client_Activity(在下面的布局中定义,当我点击主屏幕上的按钮时我调用此活动):

Intent intent = new Intent(getActivity(), ClientsMainActivity.class);

startActivity(intent);

问题很简单,ClientsMainActivity不会调用OnCreateView或任何东西,只需将布局设置为定义我的Fragment和我的ListFragment的布局.这很好,因为我没有尝试将任何内容传递给ClientsMainActivity,但如果我有一个假设的活动,例如:

SessionMainsActivity在他们点击客户端的会话编辑时调用,然后我不会以相同的方式调用SessionsMainActivity(启动只设置为alayout的活动),我希望布局设置为定义我的片段如何分割起来.但是我也希望将数据传递给它,然后传递给后续的片段(比如他们点击哪个会话进行编辑/混音).

所以我想知道上述是否有意义,我确信这是一个简单的事情,我无法将我的大脑包裹起来.我没有问题从其他片段调用FragmentActivities,它们占据整个屏幕,但它的工作原理.所以我想最大的问题是ClientsMainActivity来自于我在网上找到的一些例子,它可以帮助您了解如何在屏幕上制作多个片段.让我完全了解FragmentActivity所做的就是将内容视图设置为一个完成所有工作的布局,这就是为什么我无法弄清楚如何编写它来做同样的事情但是让我传入值布局定义的片段等…

结束编辑

所以我在这里使用这个漂亮的小教程:

它让我走了很长的路,并利用他们所说的主要活动和fragment_layout.xml,我在左边有一个很好的客户列表(这是一个列表碎片)和右边的细节片段.

然后,我添加了在客户端上编辑会话信息的功能(或编辑客户端详细信息),这两者都是全屏片段.这很有效.

现在我决定我的会话编辑ui最好将服务再次分成两个窗格.

这不像我想的那样工作,就像我说我在onCreate中有一个main_Activity这样做:

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main_client_activity);

}

main_client_activity.xml在两个布局中定义,但横向平板电脑的布局是:

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/client_list" android:layout_weight="1"

android:layout_width="0px" android:layout_height="match_parent" />

android:layout_width="0px" android:layout_height="match_parent"

android:background="?android:attr/detailsElementBackground"/>

这一切都很棒!在这种情况下,我处理了其他所有内容,作为启动自己片段的全屏活动:

EditSessionActivity

EditClientActiivyt都使用getSupportFragmentManager().beginTransaction,我可以从.newInstance调用中将信息传递给它.

我使用按钮,textviews等定义了session_edit.xml布局,这非常有用.多数民众赞成我在我的SessionEdit片段中加载的内容由我的EditSessionActivity“启动”但现在因为我想把它分开,我遇到了麻烦.上面我定义了一个client_list和一个client_details id,这些占位符是否在我的屏幕上?当我想用完全不同的片段替换那些时,我会引用那些吗?

或者我是否构建另一个片段布局,称为像fragment_session_layout,它定义如下:

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/session_edit" android:layout_weight="1"

android:layout_width="0px" android:layout_height="match_parent" />

android:layout_width="0px" android:layout_height="match_parent"

android:background="?android:attr/detailsElementBackground" />

对不起,我不知道在我的问题上用什么来标题,这基本上是如何两次拍摄两个片段.在线演示展示了如何做一个(以及一个简单的ListFragment).

我已经完成了以上所有操作,我只是无法弄清楚如何将片段传递给我需要的数据,我在EditSessionActivity中使用它:

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

int clientID = getIntent().getIntExtra(THE_SELECTED_CLIENT, -1);

int sessionID = getIntent().getIntExtra(SELECTED_SESSION,-1);

SessionEdit edits = SessionEdit.newInstance(this.getBaseContext(), false, clientID, sessionID);

mUIListener = (OnUpdateUI)edits;

getSupportFragmentManager().beginTransaction().add(android.R.id.content, edits).commit();

}

虽然工作正常,但是为了尝试坚持早期的片段示例,我认为我的EditSessionActivity有点像制作另一个MainActivity(因为它有两个面板,就像主面板一样).所以我在EditSessionActivity中重新编写了onCreate:

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.edit_session_fullview);

}

在我的EditSession片段处理onCreateView之后,我得到了最终的工作,但是无法传递数据因为没有使用像之前的onCreate那样具有edits = SessionEdit.newInstance(…的对象的实例化. .)

因此,做一个有两个难点的其他片段布局并在触发正确的动作时启动它是一种好习惯.或者是否应该替换已经创建的两个片段?以某种方式从我的main_client_activity.xml?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值