单击片段内的图像按钮以打开新片段

时间:2015-01-04 11:45:40

标签: java android android-fragments imagebutton

我正在创建一个由不同片段的viewpager组成的应用程序。这些片段包含不同的图像按钮。我想在点击每个图像按钮时打开片段。但我不知道该怎么做我是碎片的新手,我对他们了解不多。我试着在2天后制作这个代码。请你帮我解决。所以我将能够完成我的项目应用。 /> 我NoticeBoard.java的布局如下:其中包含2 imagebuttonslistview

 <?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;
        }
    }

2 个答案:

答案 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等