Shiv
Shiv

Reputation: 139

Comparing drawable image with imageview icon android?

I am comparing the imageview with drawable image. If it is same, then I need to write a logic.

If it is not same, I need to handle another logic.

So what I tried is,

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");
                }
                }

But I am getting crash as,

java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable$ConstantState android.graphics.drawable.Drawable.getConstantState()' on a null object reference at com.view.SummaryActivities$5.onClick(SummaryActivities.java:130)

in 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" />

Upvotes: 0

Views: 442

Answers (2)

mehul chauhan
mehul chauhan

Reputation: 1802

Use setImageResource insted of 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");
            }
      }

Upvotes: 1

Omkar
Omkar

Reputation: 3100

add contentView and initialize submitBtn in onCreate() like below

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");
                }
                }

Upvotes: 0

Related Questions