2013-04-01 80 views
0

我有一個類型爲Fragment的getItem(int position)方法。我有大約100多頁,這意味着每一頁都不一樣我正在嘗試使用switch和case語句。每種情況都會返回一個擴展Fragment的新類,如下所示。更簡單的方式在Java中使用Switch/Case語句Android

public class Pages{ 
public static class Page1 extends Fragment { 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    final View rootView = inflater.inflate(R.layout.fragment_main_dummy, 
      container, false); 
    final Button search = (Button) rootView.findViewById(R.id.clicktosearch); 
    final EditText number = (EditText)rootView.findViewById(R.id.number); 
    search.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      for(int i = 0; i < MainActivity.Help.arr.length; i++){ 
       if(number.getText().toString().equals(MainActivity.Help.arr[i])){ 
        MainActivity.mViewPager.setCurrentItem(i); 
       } 
      } 
     } 
    }); 
    WebView webview = (WebView) rootView 
      .findViewById(R.id.webview); 
    webview.loadUrl("file:///android_asset/2.html"); 
    return rootView; 
     } 

    } 
} 
public Fragment getItem(int position) { 
    switch(position){ 
    case 1: 
     Pages.Page1 page1 = new Pages.Page2(); 
     return page1; //same with other pages in different cases. 

有沒有更容易做到這一點,而不是使用switch/case語句,這將花費很長時間。謝謝

+3

從你給'page1',...,'page900'的例子將它們設置爲頁面都沒有任何不同。你爲什麼需要一個開關? – andre

+0

heheh,不錯的代碼:) – Taras

+0

感謝編輯這個問題,下一步就是給出一個反饋給答案,就像「這不會工作,因爲xy ..」 – lelloman

回答

1

是的。有一個更簡單的方法

Page createPage(int index) 
{ 
    // ignore the damn index 
    return new Page(); 
} 

將做同樣的事情你的功能正在做。由於您似乎沒有做任何事情來保存存儲正在創建的頁面的變量。

另一方面,如果想要將它存儲在某個地方,你可以在類中有一個數組(這個函數存在的地方) - 比如說這個類是一本書。

public class Book 
{ 
    private Page [] p; 

    public Book() 
    { 
     p = new Page[1000]; 
     for(int i = 0; i < 1000; ++i) 
      p[i] = new Page(); 
    } 

    public Page createPage(int index) 
    { 
     return p[index]; 
    } 
} 

還是一個延遲初始化

public class Book 
{ 
    private Page [] p; 

    public Book() 
    { 
     p = new Page[1000]; 
    } 

    public Page createPage(int index) 
    { 
     if (p[index) != null) 
      return p[index]; 

     p[index] = new Page(); 
     return p[index]; 
    } 
} 
1

你想用一個函數來創建對象

Page getPage(){ 
    return new Page(); 
} 

我認爲每個頁面已經得到了它自己的屬性,也許一個字符串或什麼。所以,你可以存儲這些值在ArrayList<String>並根據指數

Page getPage(int index){ 
    Page p = new Page(); 
    String attr = youArrayList.get(index); 
    p.setAttrMethod(attr); 
    return p; 
}