2015-01-04 65 views
0

我正在創建一個應用程序,它由一個viewpager與不同的片段組成。這些片段包含不同的imagebuttons.I想打開片段時,每個這些圖像按鈕被點擊。但我不知道該怎麼做。我對碎片很陌生,對這些碎片我不太瞭解。我試圖在2天后編寫這段代碼。如果你能幫我解決問題,那麼我將能夠完成我的項目應用。
我的佈局NoticeBoard.java如下:這包含2 imagebuttonslistviewImagebutton裏面的一個片段點擊打開一個新的片段

<?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佈局,銅,KU,HTU同上,但不同的適配器上的上述相同listview.I設置已經爲PTU,hptu,在Cu和區定義不同的適配器.java類

我的NoticeBoard.java class是一個將noticeboard佈局設置爲view和listview的片段。

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

我想,每一個按鈕被點擊了公告板上的佈局應該會出現,但不同的listview.And我也希望在布告欄佈局打開PTU的ImageButton應該出現點擊在其片段列表視圖時間。 以下是我的ku.java類,它包含與ptu相同的視圖和列表視圖,但通過設置具有不同值的適配器將不同的值設置爲列表視圖。

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

可以請你是否在應用程序開發過程中出現問題? – Krish 2015-01-04 13:24:19

+0

是什麼真的是你的問題?片段不切換或什麼? – Elltz 2015-01-04 14:08:01

+0

是的,我想在我的應用程序中單擊imagebutton時切換到不同的片段。 – 2015-01-07 11:31:54

回答

0

我覺得問題在於你的片段管理器的初始化。

FragmentManager fm = getFragmentManager(); 

代替它,使用

FragmentManager fragmentManager = ((MainActivity)getActivity()).getSupportFragmentManager(); 

這裏MainActivity是你在呼喚你的所有片段的片段活動。

+0

但是你提出的建議根本不起作用。 – 2015-01-07 11:30:51

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(); 

    } 

注:新yourFragmentNAme意味着你要跟片段類喜歡苦,PTU等

+0

void set_view_FAQ()中的行爲是什麼? – 2015-01-07 13:16:22

+0

public static SliderActivity act = SliderActivity.this;因爲這是靜態方法,因此我將act對象用作類當前上下文Slider活動是您的fragmentActivity我使用此名稱 – 2015-01-08 10:35:49