如何在此类扩展的另一个类的Mainactivity中找到一个对象(例如Imageview)?
我的主动:
public class MainActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onClick(View view){
}}
我的DrawingView类:
public class DrawingView extends View {
public DrawingView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
drawCanvas = new Canvas(canvasBitmap);
}
............
}
在我的activity_main.xml中我有一个Imageview,但我找不到它。 我在网站搜索,最佳答案是这样的:
How to update a TextView of an activity from another class
但这个答案对我没有帮助。 如何在onTouchEvent或DrawingView类的其他部分中找到Imageview? 为什么这个鳕鱼对我不起作用:
imageView = (ImageView) getRootView().findViewById(R.id.imageView);
答案 0 :(得分:0)
您可以将您的Activity / Context / Widgets(更好的是,创建一个WeakReference)的引用传递给您的DrawingView类,但这样您的类就会与您的Activity紧密结合,这不是一个好习惯。
最好的方法是在你连接的第二个答案中。在DrawingView类中声明一个接口,让Activity实现接口。您可以在需要时在DrawingView类中调用此接口的方法,并在Activity中的相应实现中获得所需的所有引用: https://stackoverflow.com/a/27939196/3333165
答案 1 :(得分:0)
感谢您的帖子。 但是,当我将我的DrawingView类更改为关闭代码我的应用程序将被此按钮关闭"不幸的是,绘图已停止"
我的新DrawingView类:
public class DrawingView extends View {
//public DrawingView(Context context, AttributeSet attrs) {
// super(context, attrs);
//}
Context context;
public DrawingView(Context context, AttributeSet attrs){
super(context, attrs);
this.context=context;
}
public void Update(){
imageView = (ImageView) ((Activity)context).findViewById(R.id.imageView);
imageView.setVisibility(GONE);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
drawCanvas = new Canvas(canvasBitmap);
}
............
}