Android,试图从触摸事件中调用新的意图

Android,试图从触摸事件中调用新的意图,android,Android,我正在尝试制作一个应用程序,当触摸屏幕时,它会唤起一个新的意图。 我有捕获视图类中触摸事件的代码。当我尝试创建一个新的intent时,intent(this,cYesNoDisplay.class);,我得到一个错误,说构造函数是未定义的,我假设构造函数不是在视图基类中定义的,而是在活动类中定义的 我很困惑如何做到这一点,我的视图类是intent类的成员,有没有一种方法可以称之为how????我认为必须有一个wy来做这件事,仍然在学习Java。 Ted您对视图类的评估是正确的,您在视图类中发现了

我正在尝试制作一个应用程序,当触摸屏幕时,它会唤起一个新的意图。 我有捕获视图类中触摸事件的代码。当我尝试创建一个新的intent时,intent(this,cYesNoDisplay.class);,我得到一个错误,说构造函数是未定义的,我假设构造函数不是在视图基类中定义的,而是在活动类中定义的

我很困惑如何做到这一点,我的视图类是intent类的成员,有没有一种方法可以称之为how????我认为必须有一个wy来做这件事,仍然在学习Java。
Ted

您对视图类的评估是正确的,您在视图类中发现了问题。要使其正常工作,请执行以下操作:

Intent i = new Intent(NameOfYourActivity.this, cYesNoDisplay.class);
将[NameOfYourActivity]替换为您所在活动的名称

编辑:我可能误解了你在做什么。如果您实际上已经构建了自己的视图类,并且正在重写onTouch(),那么您实际上需要做一些不同的事情

如果您还没有添加:

Context ctx;
到您的类声明

在构造函数中,修改它以存储作为参数传递到声明的ctx引用中的上下文

public [ClassName] (Context c){
    this.ctx = c;
}
然后在onTouch()中执行以下操作:

Intent i = new Intent(ctx, cYesNoDisplay.class);
ctx.startActivity();

再次编辑:必须使用
ctx.startActivity(i)的原因说明startActivity()是一种上下文方法。因为活动是一个上下文,所以当您从活动内部调用它时,不必在它前面放任何东西。但是,当您在另一个类的“内部”时,您必须使用对上下文的引用来调用该方法。

您对视图类的评估是正确的,即您在问题内部。要使其正常工作,请执行以下操作:

Intent i = new Intent(NameOfYourActivity.this, cYesNoDisplay.class);
将[NameOfYourActivity]替换为您所在活动的名称

编辑:我可能误解了你在做什么。如果您实际上已经构建了自己的视图类,并且正在重写onTouch(),那么您实际上需要做一些不同的事情

如果您还没有添加:

Context ctx;
到您的类声明

在构造函数中,修改它以存储作为参数传递到声明的ctx引用中的上下文

public [ClassName] (Context c){
    this.ctx = c;
}
然后在onTouch()中执行以下操作:

Intent i = new Intent(ctx, cYesNoDisplay.class);
ctx.startActivity();

再次编辑:必须使用
ctx.startActivity(i)的原因说明startActivity()是一种上下文方法。因为活动是一个上下文,所以当您从活动内部调用它时,不必在它前面放任何东西。但是,当您在另一个类的“内部”时,您必须使用对上下文的引用来调用该方法。

使用此方法。这项工作在我的项目中很好

意图i=新意图(活动的名称。this,cYesNoDisplay.class);
星触觉(i)

用这个。这项工作在我的项目中很好

意图i=新意图(活动的名称。this,cYesNoDisplay.class);
星触觉(i)

谢谢你的帮助,但我还是不能让它工作。您的代码编译fine Intent i=new Intent(ctx,cYesNoDisplay.class);我添加了以下行以开始intent startActivity(i)。这给了我一个编译错误,说这个方法不存在-TED抱歉,您需要执行ctx.startActivity(i);我在刚才的回答中添加了这一点作为编辑。谢谢你的帮助,但我仍然无法让它工作。您的代码编译fine Intent i=new Intent(ctx,cYesNoDisplay.class);我添加了以下行以开始intent startActivity(i)。这给了我一个编译错误,说这个方法不存在-TED抱歉,您需要执行ctx.startActivity(i);我刚才在我的回答中加了这个作为编辑。