我从外包开发者手中接管了这个android项目。我做iOS开发所以我仍然试图加快android的速度。该应用有一个顶部标签导航,显示在所有视图上。主视图是一个片段,其中包含的图标在单击时会生成取代主视图的Web视图,导航选项卡仍在视图中。我想用列表视图替换其中一个webview,这是我已编码的片段(EHallSchedFragment.java),因此当列表视图上的图标被点击时,仍然可以在视图中替换主视图。见下图。
主页视图
我希望在参观大厅时间表时点击图标
以下是该按钮存在的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代码,它将在现有视图中打开片段,并保留导航选项卡。
答案 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();
}
}
所以此时,右侧片段将被添加到视图中。
我希望这可以帮到你!