有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java试图使用泛型延迟加载安卓视图

我有一个应用程序,在我的一个活动中,我创建了一个基本活动,其中包含一些派生类可以使用的助手方法

我有一个惰性加载视图的方法,下面是代码

    protected <T extends View> void loadView(T view, int id) {
    if(view == null){
        view = (T)findViewById(id);
    }

在我的派生类中,我这样称呼它

private Button btnAddAlarm
...
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.timer_list);

    loadView(btnDeleteAlarm, R.id.btnDeleteAlarm); //the view in the helper method loaded fine
    btnDeleteAlarm.setEnabled(false); //Null pointer exception!

问题是btnDeleteAlarm退出函数后为null,即使传入了引用

我已经有一段时间没有接触过java了,但是如果我记住了基本知识,那么在传递引用时就不会发生这种情况


共 (1) 个答案

  1. # 1 楼答案

    你从来没有给btnDeleteAlarm分配过什么。 在java中,方法总是复制它们的参数,因此loadView会获取引用btnDeleteAlarm的副本,并且可能会更改副本,但它不会更改btnDeleteAlarm。 您可以让loadView方法返回“视图”,并在onCreate方法中将其分配给btnDeleteAlarm