How to catch a click event on a button?

前端 未结 7 822
[愿得一人]
[愿得一人] 2020-12-05 04:28

.NET Developer here just getting started with Eclipse and Android.

Can someone show me in the simplest way possible, with the absolute fewest lines of code, how to D

相关标签:
7条回答
  • 2020-12-05 05:11

    All answers are based on anonymous inner class. We have one more way for adding click event for buttons as well as other components too.

    An activity needs to implement View.OnClickListener interface and we need to override the onClick function. I think this is best approach compared to using anonymous class.

    package com.pointerunits.helloworld;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MainActivity extends Activity implements OnClickListener {
       private Button login;
    
       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          login = (Button)findViewById(R.id.loginbutton);
          login.setOnClickListener((OnClickListener) this);
          Log.i(DISPLAY_SERVICE, "Activity is created");
    
       }    
    
       @Override
       public boolean onCreateOptionsMenu(Menu menu) {
    
          getMenuInflater().inflate(R.menu.main, menu);
          return true;
        }
    
       @Override
       public void onClick(View v) {
         Log.i(DISPLAY_SERVICE, "Button clicked : " + v.getId());
       }
    }
    
    0 讨论(0)
  • 2020-12-05 05:12

    Just declare a method,e.g:if ur button id is button1 then,

    button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(Context, "Hello", Toast.LENGTH_SHORT).show();
            }
        });
    

    If you want to make the imageview1 visible then in that method write:

    imageview1.setVisibility(ImageView.VISIBLE);
    
    0 讨论(0)
  • 2020-12-05 05:14

    You can just do it in your Activity's onCreate() method. For example:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        //Assign the button to a variable
        Button button1 = (Button)findViewById(R.id.button1);
    
        //Assign the ImageView to a final variable, so that it's
        //accessible from an inner class
        ImageView imageView = (ImageView)findViewById(R.id.imageview1);
    
        //Assign it a new OnClickListener
        button1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                imageView.setVisibility(View.VISIBLE);
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-05 05:16

    /src/com/example/MyClass.java

    package com.example
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class MyClass extends Activity
    {
    
      @Override
      public void onCreate(Bundle savedInstanceState)
      {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);    
    
        Button button = (Button) findViewById(R.id.button1);
    
        button.setOnClickListener(new OnClickListener()
        {
          public void onClick(View v)
          {
             ImageView iv = (ImageView) findViewById(R.id.imageview1);
             iv.setVisibility(View.VISIBLE);
          }
        });
    
      }
    }
    

    /res/layout/main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
        <Button 
          android:text="Button"
          android:id="@+id/button1"
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content"
        />
        <ImageView 
          android:src="@drawable/image" 
          android:layout_height="wrap_content" 
          android:layout_width="wrap_content" 
          android:id="@+id/imageview1"
          android:visibility="invisible"
        />
    </LinearLayout>
    
    0 讨论(0)
  • 2020-12-05 05:16

    Taken from: http://developer.android.com/guide/topics/ui/ui-events.html

    // Create an anonymous implementation of OnClickListener
    private OnClickListener mCorkyListener = new OnClickListener() {
        public void onClick(View v) {
          // do something when the button is clicked
        }
    };
    
    protected void onCreate(Bundle savedValues) {
        ...
        // Capture our button from layout
        Button button = (Button)findViewById(R.id.corky);
        // Register the onClick listener with the implementation above
        button.setOnClickListener(mCorkyListener);
        ...
    }
    
    0 讨论(0)
  • 2020-12-05 05:18

    Change your onCreate to

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

    for me this update worked

    0 讨论(0)
提交回复
热议问题