我有这个设计问题。我有一个活动,它承载两个片段,任何给定的时间点只有一个活动是可见的。
活动A托管片段B和片段C
主机活动A实现FragmentCommunicator接口并使用此方法实现响应(int code)方法通信器片段B和C都可以与主机Activity通信。
现在问题就在于此。
在onClick of Host活动中,我检查某些条件并根据我决定显示哪个片段。
public void onClick(View v) {
switch (v.getId()) {
case R.id.some_button
if(authNotedone)
showFragmentA();
else{
EDIT: //setting some properties before showing Fragment B
showFragmentB();
}
}
}
到目前为止一切正常。如果条件为真,则可以使用登录表单显示FragmentA。成功登录后,我想再次显示片段B.我怎样才能做到这一点。
我尝试了什么?
1)成功登录后片段A使用Fragmentcommunicator的响应(代码)方法向Host活动发送消息,但它设计很难看,因为如果代码成功,我必须调用performClick()或在response方法中调用showFragmentA()。 / p>
我的程序中可能有多个这样的条件我如何能够整齐地处理这些问题?
答案 0 :(得分:1)
使用界面作为对活动的回调。在活动中收到消息后,无需单击按钮即可替换容器中的现有片段。
在活动中实施界面
FragmentB newFragment = new FragmentB();
Bundle args = new Bundle();
args.putInt("key", "message");
newFragment.setArguments(args);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, newFragment);
// replace with fragmentb. no need to perform click again.
// based on the message you decide which fragment you want to replace with
transaction.commit();
你可以找到一个例子@
http://developer.android.com/training/basics/fragments/communicating.html
答案 1 :(得分:0)
你想在片段之间导航吗?如果是这样,为什么不实施导航标签,请查看this link。