如何从另一个类中找到Mainactivity中的对象
问题描述:
如何从另一个此类已扩展的类中找到Mainactivity中的对象(例如Imageview)?如何从另一个类中找到Mainactivity中的对象
我Mainactivity:
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
但这个答案剂量不会帮我。 如何在DrawingTutorial类的onTouchEvent或其他部分找到Imageview? 为什么这个鳕鱼DOS没有为我工作:
imageView = (ImageView) getRootView().findViewById(R.id.imageView);
答
你可以通过你的活动/上下文/部件(更好,创建一个WeakReference的)你DrawingView类的引用,但这样一来你的类成为紧密耦合与你的活动,这不是一个好习惯。
最好的方法是在你已经链接的第二个答案。在DrawingView类中声明一个接口并让Activity实现接口。当您需要它时,您可以在DrawingView类中调用此接口的方法,并且在您的活动中的相应实现中,您具有所有需要的引用: https://stackoverflow.com/a/27939196/3333165
答
感谢您的帖子。 但是当我改变我的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);
}
............
}