2012-12-14 73 views
-2

當方法單一時,它可以正常工作。將方法拆分爲多個方法

String as = System.getProperty("line.separator"); 

    ArrayList<String> products = new ArrayList<String>(); 
products.add("Banana" +as+ "Its color is yellow."); 
products.add("Orange" +as+ "Orange is a sour fruit."); 
products.add("Onion" +as+ "Onion usually used on Pizza"); 

如果它被分成多個;這是行不通的。

String as = System.getProperty("line.separator"); 

ArrayList<String> products = new ArrayList<String>(); 
    addFirstThousand(products); 
    addSecondThousand(products); 

    private void addFirstThousand(ArrayList<String> products) { 
     products.add("Banana" +as+ "Its color is yellow."); 
     products.add("Orange" +as+ "Orange is a sour fruit."); 
     products.add("Onion" +as+ "Onion usually used on Pizza"); 
     } 

    private void addSecondThousand(ArrayList<String> products) { 
    products.add("Apple" +as+ "Apple is a big corporation"); 
    products.add("Love" +as+ "Love is releted to heart"); 
    products.add("Pizza" +as+ "It's origineted from Italy"); 

    } 

爲了方便understinding:

enter image description here

我怎樣才能在多個分這塊嗎?

+1

應該沒問題...這裏有一個小的測試用例來重現*應該*的工作:http://ideone.com/zvEunK ...你能提供一個[SSCCE](http:// sscce。 org /)其他人可以運行以測試您的問題? – Eric

+1

什麼不行? –

+0

什麼是編譯器錯誤? –

回答

0

我只能猜測不準確的編譯器錯誤的答案。我的猜測是你已經在另一種方法中聲明瞭addFirstThousand()addSecondThousand()方法。 Java不允許這樣做。如果是這種情況,那麼可以通過將這些方法移出包含方法來解決問題。他們應該在內聲明,但不能在其他方法內部聲明。

3

你試圖從類代碼本身調用的方法。你不能這樣做(除了在靜態初始化塊中,在這種情況下不起作用)。

取決於你在哪裏工作,需要移動下面的代碼:

addFirstThousand(products); 
addSecondThousand(products); 
  • 如果你在一個Activity工作,這段代碼應該是onCreate();
  • 對於Fragment,使用onViewCreated();
  • 對於其他任何使用構造函數。

其餘的應留是怎麼回事。

像這樣(爲Activity):

public class MyActivity extends Activity { 
    String as = System.getProperty("line.separator"); 

    ArrayList<String> products = new ArrayList<String>(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addFirstThousand(products); 
     addSecondThousand(products); 
    } 

    private void addFirstThousand(ArrayList<String> products) { 
     products.add("Banana" +as+ "Its color is yellow."); 
     products.add("Orange" +as+ "Orange is a sour fruit."); 
     products.add("Onion" +as+ "Onion usually used on Pizza"); 
    } 

    private void addSecondThousand(ArrayList<String> products) { 
     products.add("Apple" +as+ "Apple is a big corporation"); 
     products.add("Love" +as+ "Love is releted to heart"); 
     products.add("Pizza" +as+ "It's origineted from Italy"); 
    } 
} 
+0

我還沒有擺脫這個問題!圖片鏈接https://dl.dropbox.com/u/15065300/pb-2.png – Jani

+0

應用鏈接http://www.mediafire。COM /的download.php?11ackwacv1sj9ep – Jani

+0

不,不,你必須關閉'的onCreate()'方法。再看看我放在上面的示例,並將其與您的比較。 (注意'}''以上私人無效addFirstThousand') – Eric

0

有可能的原因..

  1. 要調用addFirstThousand(products);addSecondThousand(products);這些方法從靜態方法。
    溶液:使addFirstThousand(products);addSecondThousand(products);到靜態呼叫使用 創建對象這些方法。
  2. 要調用addFirstThousand(products);addSecondThousand(products);這些來自不同類的方法。
    溶液:調用使用創建對象這些方法。