add onclick listener to predefined button?

后端 未结 5 655
春和景丽
春和景丽 2020-12-01 09:03

I\'ve got the following button in my xml layout file...

相关标签:
5条回答
  • 2020-12-01 09:31

    This answer comes from Five Ways to Wire Up an Event Listener. Please read that blog post for a fuller explanation from the author. See my other answer for these five ways reworked to add multiple onClick listeners.

    1. Member Class

    public class main extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //attach an instance of HandleClick to the Button
            findViewById(R.id.button1).setOnClickListener(new HandleClick());
        }    
        private class HandleClick implements OnClickListener{
            public void onClick(View arg0) {
                Button btn = (Button)arg0;  //cast view to a button
                // get a reference to the TextView
                TextView tv = (TextView) findViewById(R.id.textview1);
                // update the TextView text
                tv.setText("You pressed " + btn.getText());
            }
        }
    }
    

    2. Interface Type

    public class main extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //use the handleClick variable to attach the event listener
            findViewById(R.id.button1).setOnClickListener(handleClick);
        }    
        private OnClickListener handleClick = new OnClickListener(){
            public void onClick(View arg0) {
                Button btn = (Button)arg0;
                TextView tv = (TextView) findViewById(R.id.textview1);
                tv.setText("You pressed " + btn.getText());
            }
        };
    }
    

    3. Anonymous Inner Class

    public class main extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            findViewById(R.id.button1).setOnClickListener(new OnClickListener(){
                public void onClick(View arg0) {
                Button btn = (Button)arg0;
                TextView tv = (TextView) findViewById(R.id.textview1);
                tv.setText("You pressed " + btn.getText());
                }
            });
        }     
    }
    

    4. Implementation in Activity

    public class main extends Activity implements OnClickListener{
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            findViewById(R.id.button1).setOnClickListener(this);
        }    
        public void onClick(View arg0) {
            Button btn = (Button)arg0;
            TextView tv = (TextView) findViewById(R.id.textview1);
            tv.setText("You pressed " + btn.getText());
        }
    }
    

    5. Attribute in View Layout for OnClick Events

    public class main extends Activity{
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }    
        public void HandleClick(View arg0) {
            Button btn = (Button)arg0;
            TextView tv = (TextView) findViewById(R.id.textview1);
            tv.setText("You pressed " + btn.getText());
        }
    }
    

    xml:

    <Button android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button 1"
            android:onClick="HandleClick"/>
    
    0 讨论(0)
  • 2020-12-01 09:33

    You can try this.

    public class myNewClass extends Activity implements OnClickListener {
        ................... 
        ...................       
    
        Button button = (Button)findViewById(R.id.button1);
        button.setOnClickListener(this);
    
            public void onClick(View v) {
                    Intent i = new Intent();
                    Bundle extras = new Bundle();
    
            // This will catch the button click 
            // Now do what you wanted to do as a 
            // result of the onClick
            }
     }
    
    0 讨论(0)
  • 2020-12-01 09:49

    1.use findViewById(R.id.button1).setOnClickListener(this);

    2.and activty implements OnClickListener

    0 讨论(0)
  • 2020-12-01 09:53

    You just need something like this:

    Button buttonOne = (Button) findViewById(R.id.button1);
    buttonOne.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {
                //Do stuff here
        }
    });
    
    0 讨论(0)
  • 2020-12-01 09:57

    You can apply onClicklistner in Two way : 1. Under onCreate Method
    2. Out side onCreate Method


    if we will use under onCreate method then we will use like this:-

    protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my_graphics1);
    
            textview1 = (TextView) findViewById(R.id.textview1);
            circleBtn = (Button) findViewById(R.id.circleBtn);
    
            // Click Listner Under on Create Method
            circleBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                }
            });
    

    }

    if You want out side to onCreate Method then first register the onClickListner in onCreate Method like this :-

    @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my_graphics1);
    
            circleBtn = (Button) findViewById(R.id.circleBtn);
    
            **// Register on click on button
            circleBtn.setOnClickListener(new ClickMe());**
    
        }
    

    and then implement clicklistner outside of onCreate Method so full code will be like this :-

    public class ActiononBtn extends AppCompatActivity {
    
        private TextView textview1;
        private Button circleBtn;
    
    
    
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my_graphics1);
    
            textview1 = (TextView) findViewById(R.id.textview1);
            circleBtn = (Button) findViewById(R.id.circleBtn);
    
            // Register on click on button
            circleBtn.setOnClickListener(new ClickMe());
    
        } // Close onCreate Method
    
    
        private class ClickMe implements View.OnClickListener {
            public void onClick(View v) {
    
            }
        }
    
    }//Close main Activity Class
    
    0 讨论(0)
提交回复
热议问题