我正在比较图像视图和可绘制图像。如果它相同,那么我需要编写一个逻辑。
如果不一样,我需要处理另一个逻辑。
所以我尝试的是,
private ImageView emailIcon, phoneIcon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
contentView = inflater.inflate(R.layout.activity_summary_activities, null);{
emailIcon = (ImageView) findViewById(R.id.email_icon);
phoneIcon = (ImageView) findViewById(R.id.sms_icon);
phoneIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
phoneIcon.setBackgroundResource(R.drawable.round);
emailIcon.setBackgroundResource(R.drawable.ic_mark_white);
}
});
emailIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
phoneIcon.setBackgroundResource(R.drawable.ic_mark_white);
emailIcon.setBackgroundResource(R.drawable.round);
}
});
submitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (phoneIcon.getDrawable().getConstantState() == SummaryActivities.this
.getResources().getDrawable(R.drawable.ic_mark_white)
.getConstantState()) {
Log.e("going here", "going here");
}
}
但是我崩溃了,
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.graphics.drawable.Drawable$ConstantState android.graphics.drawable.Drawable.getConstantState((' at com.view.SummaryActivities$5.onClick(SummaryActivities.java:130(
在 XML 中:
<ImageView
android:id="@+id/sms_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="32dp"
android:layout_marginTop="3dp"
android:background="@drawable/ic_mark_white" />
<ImageView
android:id="@+id/email_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="32dp"
android:layout_marginTop="2dp"
android:background="@drawable/ic_mark_white" />
使用 setImageResource 而不是 setBackgroundResource
private ImageView emailIcon, phoneIcon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
contentView = inflater.inflate(R.layout.activity_summary_activities,
null);{
emailIcon = (ImageView) findViewById(R.id.email_icon);
phoneIcon = (ImageView) findViewById(R.id.sms_icon);
phoneIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
phoneIcon.setImageResource(R.drawable.round);
emailIcon.setImageResource(R.drawable.ic_mark_white);
}
});
emailIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
phoneIcon.setImageResource(R.drawable.ic_mark_white);
emailIcon.setImageResource(R.drawable.round);
}
});
submitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (phoneIcon.getDrawable().getConstantState() ==
SummaryActivities.this
.getResources().getDrawable(R.drawable.ic_mark_white)
.getConstantState()) {
Log.e("going here", "going here");
}
}
添加contentView
并在onCreate((中初始化submitBtn
,如下所示
private ImageView emailIcon, phoneIcon;
private submitBtn; //change here
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
contentView = inflater.inflate(R.layout.activity_summary_activities, null);{
emailIcon = (ImageView) contentView.findViewById(R.id.email_icon);
phoneIcon = (ImageView) contentView.findViewById(R.id.sms_icon);
submitBtn = (Button)contentView.findViewById(R.id.button_id); //change here
phoneIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
phoneIcon.setBackgroundResource(R.drawable.round);
emailIcon.setBackgroundResource(R.drawable.ic_mark_white);
}
});
emailIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
phoneIcon.setBackgroundResource(R.drawable.ic_mark_white);
emailIcon.setBackgroundResource(R.drawable.round);
}
});
submitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (phoneIcon.getDrawable().getConstantState() == SummaryActivities.this
.getResources().getDrawable(R.drawable.ic_mark_white)
.getConstantState()) {
Log.e("going here", "going here");
}
}