[英]I am getting rendering error in the latest android studio when trying to view the preview of an activity
[英]why am i getting error when trying to open new activity in android studio
当我在onCreate
方法中写入意图时出现此错误。 但是当我在外部方法中编写意图并调用它时,它就起作用了。
按钮单击侦听器是一个接口,您在此处将其作为匿名类实现,因此在该类内部, this
指的是该匿名类,而不是您的活动类,但Intent
构造函数需要活动类实现,因此正如@ADITYA RANADE 回答的那样,您需要将其更改为MainActivity.this
。
但是,如果您用 lambda 替换匿名类,则可以避免这种情况:
Button button = new Button(context);
button.setOnClickListener(v -> {
Intent intent = new Intent(this, MainActivity.class);
});
在 Intent 中将其更改为MainActivity.this
嗯,这是因为你调用它的地方或更准确地说是“上下文”(不是 androidish 上下文)。
当您从匿名创建的内部类调用它时,该内部类实现了视图单击的侦听器,因此在这种情况下, this代表其他内容 - 匿名类。
但是另一方面,当您在活动本身内部创建方法(例如 openScheduleActivity() )时, this关键字代表活动本身,实际上代表 androidish上下文,或者在这种特殊情况下甚至是活动。 因此,您可以保留已有的大小写并对其进行稍微编辑,或者您可以使用 lambda 表达式,或者您可以使用您已经发现的活动本身内部的方法。
编辑案例:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, schedule.class);
startActivity(intent);
}
});
拉姆达表达式:
button.setOnClickListener(v -> {
Intent intent = new Intent(MainActivity.this, schedule.class);
startActivity(intent);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.