我正在创建一个由不同片段的viewpager组成的应用程序。这些片段包含不同的图像按钮。我想在点击每个图像按钮时打开片段。但我不知道该怎么做我是碎片的新手,我对他们了解不多。我试着在2天后制作这个代码。请你帮我解决。所以我将能够完成我的项目应用。 />
我NoticeBoard.java
的布局如下:其中包含2 imagebuttons
和listview
。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns : android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:id="@+id/relative">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:background="#AAAAAA"
android:id="@+id/line">
<ImageButton
android:id="@+id/ptu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:background="#CCCCCC"
android:clickable="true"
android:onClick="OnClick"
android:contentDescription="@string/mko"
android:paddingBottom="10dp"
android:paddingLeft="9.9dp"
android:paddingRight="20dp"
android:paddingTop="10dp"
android:src="@drawable/img" />
<ImageButton
android:id="@+id/ku"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="1dp"
android:background="#CCCCCC"
android:clickable="true"
android:contentDescription="@string/mn"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="10dp"
android:src="@drawable/image" />
</LinearLayout>
<ListView
android:id="@+id/nb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/line"
android:layout_alignParentTop="true"
>
</ListView>
</RelativeLayout>
我的ptu,cu,ku,htu的布局与上面的相同,但在上面相同的listview上设置了不同的适配器。我在.java中为ptu,hptu,cu和ku定义了不同的适配器类
我的NoticeBoard.java
类是一个片段,其布告板布局设置为视图和列表视图。
public class Notice_Board extends Fragment {
ListView l;
ImageButton i1,i2,i3,i4;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_noticeboard, container, false);
l = (ListView) rootView.findViewById(R.id.nb);
String[] title = new String[]{"Important Announcements", "Datesheet", "Results","Placement Drives","Admissions","Entrance exams"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, title);
l.setAdapter(adapter);
i1 = (ImageButton ) rootView
.findViewById(R.id.ptu);
i2 = (ImageButton ) rootView
.findViewById(R.id.cu);
i3 = (ImageButton ) rootView
.findViewById(R.id.ku);
i4 = (ImageButton ) rootView
.findViewById(R.id.hptu);
i1.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.layout.activity_noticeboard,new PTU(),"PTU");
}
return rootView;
}
}
下面是我的ptu.java
类,其中包含与布告栏相同的视图和列表视图,但通过设置具有不同值的适配器为listview设置不同的值。
public class PTU extends Fragment{
ListView l;
ImageButton i2;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_noticeboard, container, false);
String[] array = new String[] {"Important Announcements", "Results",Programme","Syllabus","Fees","Events","Placement Drives"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, array);
l = (ListView) rootView.findViewById(R.id.nb);
l.setAdapter(adapter);
return rootView;
}
}
我希望每次点击一个按钮时,公告板的布局应该会出现但是列表视图不同。我也想要当布告板布局打开时,ptu图像按钮应该看起来点击了其片段中的列表视图。
下面是我的ku.java
类,它包含相同的视图和用于ptu的列表视图,但通过设置具有不同值的适配器为listview设置不同的值。
public class KU extends Fragment{
ListView l;
ImageButton i2;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_noticeboard, container, false);
String[] array = new String[] {"Important Announcements", "Results",Programme","Syllabus","Fees","Events","Placement Drives"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, array);
l = (ListView) rootView.findViewById(R.id.nb);
l.setAdapter(adapter);
return rootView;
}
}
答案 0 :(得分:0)
我认为问题在于你对片段管理器的初始化。
FragmentManager fm = getFragmentManager();
而不是它,使用
FragmentManager fragmentManager = ((MainActivity)getActivity()).getSupportFragmentManager();
此处,MainActivity是您从中调用所有片段的片段活动。
答案 1 :(得分:0)
您有一个主片段管理器活动名称片段活动。这是主要的片段活动管理器。你必须通过这个活动设置所有片段。
i1 = (ImageButton ) rootView
.findViewById(R.id.ptu);
i2 = (ImageButton ) rootView
.findViewById(R.id.cu);
i3 = (ImageButton ) rootView
.findViewById(R.id.ku);
i4 = (ImageButton ) rootView
.findViewById(R.id.hptu);
i1.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
fragmentActiivty.setFragment();
}
注意::SetFragment函数在片段活动类
中生成public static void set_view_FAQ() {
FragmentManager fm = act.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fragment = new yourFragnmentName();
ft.add(R.id.activity_main_content_fragment, fragment);
ft.commit();
}
注意: new yourFragmentNAme意味着片段类喜欢Ku,ptu等