gpt4 book ai didi

java - 实现一个将重写 onClick() 的类

转载 作者:行者123 更新时间:2023-12-01 19:33:11 26 4
gpt4 key购买 nike

我想创建一个方法,在其他类中实现时,只需要传递一些参数,然后调用 -onclick() 函数来设置元素。

目前,我刚刚完成了这件事。但这给了我一个 RunTimeException

Unable to start activity ComponentInfo{com.example.test/com.example.testActivity.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference

我的代码:

类:可点击


imports ...

public class ClickeableOptions implements View.OnClickListener{
private CardView cardView;
private Context cont;
private Class actTarget;

public OpcionesMainClickeables() {}

public ClickeableOptions(CardView cardView, Context cont, Class actTarget) {
this.cardView = cardView;
this.cont = cont;
this.actTarget= actTarget;
}
//Getters and Setters

@Override
public void onClick(View v) {
getCardView().setOnClickListener(this);
Intent intent = new Intent(this.getCont(), this.getActTarget());
startActivity(intent);
}
}

我想像这样实现这个类......

public class MainActivity extends AppCompatActivity{

private CardView cvRegistration;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

cvRegistration = (CardView) findViewById(R.id.cvRegistration);

ClickeableOptions optionRegistration = new ClickeableOptions(
cvRegistration, this, Registration.class
);

optionRegistration.onClick(optionRegistration.getCardView());
}

我已经在同一个文件中实现了该方法,但我想这样做以使事情更加整洁。我认为问题出在 this 的使用上,但我真的不明白

最佳答案

无需从 Activity 中显式调用 onClick。只需尝试如下所示:

public ClickeableOptions(CardView cardView, Context cont, Class actTarget) {
this.cardView = cardView;
this.cont = cont;
this.actTarget= actTarget;

this.cardView.setOnClickListener(this);
}

并在onClick

@Override
public void onClick(View v) {
Intent intent = new Intent(getCont(), getActTarget());
getCont().startActivity(intent);
}

并从 Activity 中删除此行。

//optionRegistration.onClick(optionRegistration.getCardView());

现在,当您单击 CardView 时, Activity 转换就会开始。

关于java - 实现一个将重写 onClick() 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58894562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com