DolDurma
DolDurma

Reputation: 17330

Android subClass of OnClickListener does not work

i'm writing simple calculator for android and i want to create SubClass into main Class for moderate Operations. but after click on Buttons Toast do not show any message and ButtonClickListener does not work.

My source Code:

package ir.pishguy.tsms.peamoncalculator;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import static ir.tuxworld.tsms.peamoncalculator.R.layout.*;


public class MyActivity extends ActionBarActivity {
    private String Operation;
    private float NumberBf;
    private EditText Scr;
    private ButtonClickListener btnClick;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(activity_my);

        Scr = (EditText) findViewById(R.id.editText);
        int idList[]={
                R.id.button0,R.id.button1,R.id.button2,
                R.id.button3,R.id.button4,R.id.button5,
                R.id.button6,R.id.button7,R.id.button8,
                R.id.button9,R.id.buttonEq,R.id.buttonDiv,
                R.id.buttonClear,R.id.buttonSum,R.id.buttonTafrig
        };

        for (int id:idList){
            View v= (View) findViewById(id);
            System.out.println( id );
            v.setOnClickListener(btnClick);
        }
    }

    // New Class ButtonClickListener
    private class ButtonClickListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(),"CLICKED !!",
                    Toast.LENGTH_LONG).show();
        }
    }
}

Upvotes: 0

Views: 303

Answers (2)

Spring Breaker
Spring Breaker

Reputation: 8251

Try like below,

v.setOnClickListener(btnClick);

    private OnClickListener btnClick= new OnClickListener() {    
                @Override
                public void onClick(View v) {                   

                    Toast.makeText(getActivity(), "clicked", Toast.LENGTH_SHORT).show();
                }
            };

Upvotes: 0

EpicPandaForce
EpicPandaForce

Reputation: 81568

Add a line:

    btnClick = new ButtonClickListener();
    for (int id:idList) {
    ...

You never actually instantiated your ButtonClickListener, that's all.

Upvotes: 2

Related Questions