Daniëlle
Daniëlle

Reputation: 95

setOnClickListener Android Studio (making a counter)

I want to make a counter in Android Studio. Unfortunately, Android Studio says: "Cannot resolve method 'setNumber(?)'". So it can't use that method somehow?

Maybe you can help me out. I'm pretty sure it's just a small mistake, but I can't find it.

package com.example.tournastat;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.annotation.Nullable;

public class pointsCompound extends LinearLayout {
    private Button minButton;
    private Button plusButton;
    private TextView numberEditText;

    public pointsCompound(Context context) {
        super(context);
        initViews(context);
    }

    public pointsCompound(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initViews(context);
    }

    public pointsCompound(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initViews(context);
    }

    public pointsCompound(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        initViews(context);
    }

    public void initViews(Context context) {
        LayoutInflater inflater = LayoutInflater.from(context);
        inflater.inflate(R.layout.points_compound, this, true);

        minButton = findViewById(R.id.minButton);
        numberEditText = findViewById(R.id.numberEditText);
        plusButton = findViewById(R.id.plusButton);

        minButton.setOnClickListener (new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setNumber(getNumber() -1);
            }
        });

        plusButton.setOnClickListener (new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setNumber(getNumber() +1);
            }
        });

        public void setNumber (int number) {
            numberEditText.setText("" + number);
        }

        public int getNumber() {
            String text = numberEditText.getText().toString();
            return text;
        }
    }
}

(This is a screenshot of my XML Design: https://prnt.sc/rfsase)

Hopefully, someone can help me!

Upvotes: 1

Views: 152

Answers (1)

Murat Karagöz
Murat Karagöz

Reputation: 37584

Move your method setNumber and getNumber out of the scope from initViews. It's inside the {} brackets.

Upvotes: 4

Related Questions