首页 > 解决方案 > 即使声明了变量,View.OnClickListener() 也会变灰?

问题描述

即使声明了变量, 也不起作用,并且 是灰色的a.setOnClickListenerView.OnClickListener()位于ImageView弹出窗口内。它抛出一个错误:

尝试在空对象引用上调用虚拟方法“void android.widget.ImageView.setImageResource(int)”

public class MoodPopUp extends Activity {

ImageView a,b,c,d,e,f,g,h,i;

FirebaseDatabase rootNode;
DatabaseReference databaseReference;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //-----------------------------User Interface--------------------------------------------------
    setContentView(R.layout.mood_picker_popup);

    DisplayMetrics  displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

    int width = displayMetrics.widthPixels;
    int height = displayMetrics.heightPixels;

    
    //Pop Up Window Size
    getWindow().setLayout((int) (width*.8),(int)(height*.6));


    //-----------------------------Function--------------------------------------------------------

    //Pop Up Picker on Click
    a = (ImageView) findViewById(R.id.Aemoji);
    
    a.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            rootNode = FirebaseDatabase.getInstance();
            databaseReference = rootNode.getReference("Emoji");
            databaseReference.setValue("A");
        }
    });
}

这是我的 XML,它有正确的 Aemoji ID

  <ImageView
    android:id="@+id/Aemoji"
    android:layout_width="101dp"
    android:layout_height="111dp"
    android:layout_marginStart="12dp"
    android:layout_marginLeft="12dp"
    android:layout_marginTop="4dp"
    android:clickable="true"
    android:src="@drawable/smiling"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

标签: javaandroidfirebaseandroid-studio

解决方案


尝试 1

如果这不起作用,请尝试设置child您的参考:

databaseReference = rootNode.getReference().child("Emoji");

尝试2

变量“a”可能为空。您应该调试该函数以查看它是否实际上是从第一个语句中找到的setContentValues()


推荐阅读