2016-11-26 152 views
0

我想了解如何在類之間交換數據(在Android Studio中)。 因爲我已創建了三個Java類目的:Android Studio:在類之間交換數據

1)GraficActivity.java:

public class GraficActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ImageView iv = (ImageView) findViewById(R.id.testview); 
     //not working:  iv.update(100,100); 
     DataHolder.setData(100, 100); 
    } 
} 

2)DrawingView.java:

public class DrawingView extends ImageView { 
    public DrawingView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 
    private int X=200; 
    private int Y=200; 
    //not working: X = DataHolder.getX(); 
    //not working: Y = DataHolder.getY(); 
    public void update(int dataX, int dataY) { 
     X=dataX; 
     Y=dataY; 
     this.invalidate(); 
    } 
    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     Paint pinsel = new Paint(); 
     pinsel.setColor(Color.rgb(64, 64, 255)); 
     pinsel.setStrokeWidth(5); 
     canvas.drawLine(0, 0, X, Y, pinsel); 
    } 
} 

3)DataHolder.java:

public class DataHolder { 
    private static int X; 
    private static int Y; 
    public static int getX() {return X;} 
    public static int getY() {return Y;} 
    public static void setData(int dataX, int dataY) {X = dataX; Y=dataY;} 
} 

我在版面中包含了DrawingView(與其他ele發言:)在main.xml中下面的代碼:

<de.carpelibrum.grafik.DrawingView 
    android:layout_width="match_parent" 
    android:layout_height="400dp" 
    android:background="#ffffff" 
    android:id="@+id/testview" /> 

這個應用程序的工作原理,但我無法找到一個方法來傳輸數據從GraficActivityDrawingView。在DrawingView

  1. 經由單獨DataHolder作爲全局變量
  2. 隨着功能update(int, int)

    我試圖兩種方法(如上文中的代碼表示)。

最後,我將不僅需要傳遞兩個整數,還需要傳遞一個數組的內容:int data[][];

如何解決問題?

非常感謝您的建議。

乾杯, Kyriakos。

回答

1

ImageView沒有方法update(int, int)。您應該將與編號R.id.testView相關聯的視圖投射到您的DrawingView類型。然後update(int, int)應該在編譯時可用:

DrawingView iv = (DrawingView) findViewById(R.id.testview); 

另外,還要考慮你的DataHolderDrawingView存儲的位置數據。選一個。如果數據是特定於實例DrawingView,那麼您不需要DataHolder

0

完美!謝謝。

至於數據庫,我把它放在 「GraficActivity」,sratched 「DataHolder」,並在 「更新」 功能,使用指針作爲參數:

在 「GraficActivity」:

private int data[][]=new int[10][10]; 
data[0][0] = 200;  
data[0][1] = 100; 
iv.update(data); 

在「DrawingView」中:

public void update(int[][] dataXY) { 
    X=dataXY[0][0]; 
    Y=dataXY[0][1]; 
    this.invalidate(); 
} 

現在這是一個很好的工作基礎。

乾杯, Kyriakos。