我有一个带有一些可点击位图的View类,在onTouch方法中,我想在触摸位图时触发一个新活动
Intent newintent = new Intent();
newintent.setClass(view.getContext(),MainMenu.class);
startActivity(newintent);
由于该类没有扩展Activity,如何在不扩展Activity的情况下启动活动? 目前的错误是:
The method startActivity(Intent) is undefined for the type DrawView
答案 0 :(得分:5)
如果您的MainMenu.class
是Activity
并且您从某种startActivity()
调用View
方法,则需要添加Context
您的新Activity
将会启动。
在你的情况下,它将是:
view.getContext().startActivity(newintent);
答案 1 :(得分:2)
你需要有一个上下文来做这样的事情应该没问题。
在班级头部为您的视图声明一个上下文。
Context myContext = view.getContext();
然后用它来开始你的活动。
Intent newintent = new Intent();
newintent.setClass(myContext,MainMenu.class);
myContext.startActivity(newintent);myContext.startActivity(newintent);
答案 2 :(得分:1)
初始化View类时。在构造函数中,您传递活动类的Context,例如
View v = new View(context)
在你自己的View类构造函数中。将此上下文引用为类级对象。
public class MyView extend View{
private Context mContext = null;
MyView(Context context){
super(context);
mContext = context;
}
}
何时需要开始活动。
mContext. startActivity(newintent);
答案 3 :(得分:0)
您可以将展示中的视图的活动传递到此视图。 视图的构造函数可以重写为:
View(Contenxt , ..)
并将使用
context.start(...)