我想学习如何在类之间交换数据(在 Android Studio 中)。 为此,我创建了三个 Java 类:
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
包含在布局中(与其他元素一起),并在 main.xml 中使用以下代码:
<de.carpelibrum.grafik.DrawingView
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="#ffffff"
android:id="@+id/testview" />
该应用程序原则上可以工作,但我找不到将数据从 GraficActivity
传输到 DrawingView
的方法。
我尝试了两种方法(如上面的代码所示):
- 通过单独的
DataHolder
作为全局变量 - 使用
DrawingView
中的函数update(int, int)
。
最后,我不仅需要传输两个整数,还需要传输数组的内容:int data[][];
。
如何解决这个问题?
预先感谢您的建议。
干杯, 基里亚科斯。
最佳答案
ImageView
没有方法 update(int, int)
。您应该将与 id R.id.testView
关联的 View 转换为您的类型 DrawingView
。然后 update(int, int)
应该在编译时可用:
DrawingView iv = (DrawingView) findViewById(R.id.testview);
此外,请考虑您的 DataHolder
和 DrawingView
都存储位置数据。选一个。如果数据特定于 DrawingView
的实例,那么您不需要 DataHolder
。
关于java - Android Studio : exchange data between classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40823340/