所以我制作了三个3个java文件。
我在ButtonListener.java文件中实现了OnclickListener和OnClick方法。
我想在ButtonListener文件的onClick(View v)中启动intent startActivity()。但它在startActivity()行上抛出错误。
我知道我可以在onCreate of AvtivityClass下制作OnClick方法,但我不想这样做,因为我已经创建了一个可以处理所有按钮侦听器的单独java文件。
文件MainActivity.java
public class MainActivity extends AppCompatActivity {
public Button intentPurple;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentPurple=findViewById(R.id.button5);
Intent gg= new Intent(MainActivity.this, PurpleActivty.class);
ButtonListener B= new ButtonListener(gg);
intentPurple.setOnClickListener(B);
}
}
文件ButtonListener.java
public class ButtonListener implements View.OnClickListener {
private Intent g;
public ButtonListener(Intent F) {
this.g=F;
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.button5:
startActivity(g); // this line is error(red underline g) error msg
break; //is "startActivity() in ContextCompat cannot be
//applied to"
}}}
有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
我相信
public ButtonListener(Intent F) {
this.g=F;
}
你不必使用它,因为变量名称是不同的。 除此之外,我相信
Intent gg= new Intent(**MainActivity.this**, PurpleActivty.class);
MainActivity.this导致问题,因为您在另一个类中,您应该将MainActivity的上下文作为参数传递并使用
context.startActivity(g);
OR
view.getContext().startActivity(g);
答案 1 :(得分:0)
您需要从活动的上下文中调用brew install python@2
,而不是从自定义处理程序类调用。重构startActivity
到此:
ButtonListener
然后像这样打电话给你的听众:
public class ButtonListener implements View.OnClickListener {
private Intent g;
private Context caller;
public ButtonListener(Intent f, Context caller) {
this.g = f;
this.caller = caller;
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.button5:
caller.startActivity(g);
break;
}
}
}