gpt4 book ai didi

java - Android Studio : exchange data between classes

转载 作者:行者123 更新时间:2023-12-01 09:12:38 24 4
gpt4 key购买 nike

我想学习如何在类之间交换数据(在 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 的方法。

我尝试了两种方法(如上面的代码所示):

  1. 通过单独的 DataHolder 作为全局变量
  2. 使用 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);

此外,请考虑您的 DataHolderDrawingView 都存储位置数据。选一个。如果数据特定于 DrawingView实例,那么您不需要 DataHolder

关于java - Android Studio : exchange data between classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40823340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com