2012-01-05 54 views
2

我有一個數組類的命名地板,它包含的值類似以下內容:傳遞從A級到B級的陣列

List<Point> manualpoint = new ArrayList<Point>(); 
    int[] manualpointx = {135,200,300,155,235,300}; 

比方說,我希望這些價值傳遞給B類,supposingly B類已經宣佈超類查看

public class DrawView extends View implements OnTouchListener { 
    @Override 
    public void onDraw(Canvas canvas) { 
     //pass the values into this class 
    } 

} 

如何將值從類A傳遞給B?

回答

1

你可以這樣做。

final class A 
{ 
    private static int[] manualpointx = {135,200,300,155,235,300}; 
    private static List<Point> manualpoint = new ArrayList<Point>(); 

    public static int[] returnArray() 
    { 
      return(manualpointx); 
    } 

    public static List<Point> returnList()   
    { 
      return(manualpoint); 
    } 

} 
public class DrawView extends View implements OnTouchListener 
{ 
    @Override 
    public void onDraw(Canvas canvas) 
    { 
     //pass the values into this class 
     int arr[]=A.returnArray(); 
     List<Point> list=A.returnList(); 
    } 
} 

如果您需要在您的A類唯一的非靜態字段,如果你只是想使用非靜態方法,你將不得不通過類A的實例,從您的DrawView類訪問它們。

+0

謝謝你,這個答案是完美的。你搖滾!乾杯隊友 – 2012-01-05 05:32:38

+0

不客氣(總是)。 – Lion 2012-01-05 05:34:59

+0

@Ron Tan :)在這種情況下,使用'static'嵌套類會更合適。 – Lion 2012-01-06 01:06:34

0

你需要創建一個類的實例,然後從B級訪問的值,例如:

public class ClassA { 
    private int someInt; 

    public ClassA() { 
    someInt = 5; 
    } 

    public int getSomeInt() { 
    return someInt; 
    } 
} 

public class ClassB { 
    public void someMethod() { 
    ClassA instanceOfClassA = new ClassA(); 

    int someIntFromClassA = instanceOfClassA.getSomeInt(); //This is now 5; 

    // Rest of your code here 
    } 
} 

或者,你可以在ClassA創建它作爲一個靜態方法,然後調用它ClassB使用ClassA.getSomeInt();

2

要通過

//to pass array use 
intent.putExtra("intarray", manualpointx); 
// to pass list of point use 
intent.putParcelableArrayListExtra("bundle", (ArrayList<? extends Parcelable>) manualpoint); 

對於類

創建公共getter方法返回的值,並調用任何類的 方法,你想要得到的價值活動之間的數據

0

另一個想法是,嘗試在B中有一個公共類,如果可能的話,用Arr調用B的set Array方法A.現在在set數組中,我們可以有一個類變量來保存數組值,然後調用draw。

public class DrawView extends View implements OnTouchListener { 
    int[] manualpointx; 
    setArray(int[] manualpointx1){ 
     this.manualpointx = manualpointx1 
    } 
    public void onDraw(Canvas canvas) { 
     //pass the values into this class 
     we can use manualpointx 
    } 
}