在不扩展Activity超类的情况下启动另一个活动

时间:2011-11-17 08:04:24

标签: android android-activity

我有一个带有一些可点击位图的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

4 个答案:

答案 0 :(得分:5)

如果您的MainMenu.classActivity并且您从某种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(...)