Android:从片段中的按钮单击替换片段

时间:2014-08-22 19:58:05

标签: android android-fragments

我从外包开发者手中接管了这个android项目。我做iOS开发所以我仍然试图加快android的速度。该应用有一个顶部标签导航,显示在所有视图上。主视图是一个片段,其中包含的图标在单击时会生成取代主视图的Web视图,导航选项卡仍在视图中。我想用列表视图替换其中一个webview,这是我已编码的片段(EHallSchedFragment.java),因此当列表视图上的图标被点击时,仍然可以在视图中替换主视图。见下图。

主页视图

Home View

我希望在参观大厅时间表时点击图标

New View

以下是该按钮存在的onClick事件的代码。它调用webView:

    ivExhall.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                openInternalWebview("http://www.web.org/m/content.aspx?id=7006");

                //Need code here to open EhallSchedFragment.java


            }
        });

所以我需要的是onClick代码,它将在现有视图中打开片段,并保留导航选项卡。

1 个答案:

答案 0 :(得分:1)

尝试这种方法:在片段中定义一个接口,在您的活动中实现它,然后在那里覆盖该方法。最后,从您的片段中,当用户单击列表中的项目时,调用接口方法以通知事件的活动。

来自您的片段

@Override
public void onClick()
{
    //when a user selects an event from your list
    switch(position)
    {
       ((OnScheduleSelectedListener) getActivity()).switchFragment(new DetailsFragment());
    }
}

public interface OnScheduleSelectedListener
{
   void switchFragment(Fragment frag);
}

然后,您可以在活动中执行以下操作:

public class ScheduleAppActivity extends Activity implements OnScheduleSelectedListener
{

    .............................


    @Override
    switchFragment(Fragment frag)
    {
       //check if fragment is in view here and if,
       replaceFragment(fragment)

       //else
       addFragment(frag);

       commit();
    }
}

所以此时,右侧片段将被添加到视图中。

我希望这可以帮到你!