Onclick-Listener zu vordefinierter Schaltfläche hinzufügen?

Lesezeit: 5 Minuten

Benutzer-Avatar
Skizit

Ich habe die folgende Schaltfläche in meiner XML-Layout-Datei …

<Button
    android:layout_width="150dip"
    android:id="@+id/button1"
    android:layout_height="50dip"
    android:text="@string/login"
    android:layout_marginRight="10dip">
</Button>

Ich möchte programmgesteuert eine hinzufügen onclick() Listener in seiner Java-Datei. Wie würde ich das tun?

Sie brauchen nur so etwas:

Button buttonOne = (Button) findViewById(R.id.button1);
buttonOne.setOnClickListener(new Button.OnClickListener() {
    public void onClick(View v) {
            //Do stuff here
    }
});

  • Es wäre schön, die Ausnahme zu kennen. Wenn es sich um eine NullPointerException handelt, liegt dies daran, dass Sie nicht wirklich eine Ansicht mit einer ID von haben button1 im Layout Ihrer Aktivität. Wenn es sich um eine ClassCastException handelt, liegt das daran, dass die Ansicht mit dieser ID keine Schaltfläche ist.

    – Ross Hambrick

    2. Mai 2014 um 17:38 Uhr

  • Yay! Danke für die Antwort, aber ich habe herausgefunden, dass ich nicht das Layout verwende, in dem sich die Schaltfläche befindet. Meine Güte, danke nochmal 🙂

    – mr5

    5. Mai 2014 um 6:45 Uhr

  • @RossHambrick, gibt es eine Möglichkeit hinzufügen Listener, anstatt ihn zu überschreiben?

    – Schrittmacher

    18. November 2014 um 11:34 Uhr

  • @ Pacerier leider nein. Sie müssten dieses Verhalten in einer Button-Unterklasse hinzufügen, wenn Sie es wirklich brauchen würden.

    – Ross Hambrick

    18. November 2014 um 23:47 Uhr

Benutzer-Avatar
Suragch

Diese Antwort kommt von Fünf Möglichkeiten, einen Ereignis-Listener zu verdrahten. Bitte lesen Sie diesen Blogbeitrag für eine ausführlichere Erklärung des Autors. Siehe meine andere Antwort für diese fünf überarbeiteten Möglichkeiten, um mehrere onClick-Listener hinzuzufügen.

1. Mitgliedsklasse

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. Schnittstellentyp

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. Anonyme innere Klasse

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. Umsetzung in Aktivität

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. Attribut im Ansichtslayout für OnClick-Ereignisse

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

Benutzer-Avatar
Apesa

Sie können dies versuchen.

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
        }
 }

  • Wie setze ich um OnClickListener in meinem Activity?

    – mr5

    29. April 2014 um 6:54 Uhr

  • Ich habe meine Antwort bearbeitet. Schauen Sie sich die Klassendefinition an, dort wird Ihre Implementierung für OnClickListener deklariert

    – Apesa

    29. April 2014 um 13:36 Uhr

Sie können sich auf Clicklistner auf zwei Arten bewerben:
1. Unter onCreate-Methode
2. Außerhalb der onCreate-Methode


Wenn wir die onCreate-Methode verwenden, verwenden wir Folgendes: –

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) {

            }
        });

}

Wenn Sie die onCreate-Methode verlassen möchten, registrieren Sie zuerst den onClickListner in der onCreate-Methode wie folgt: –

@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());**

    }

und implementieren Sie dann Clicklistner außerhalb der onCreate-Methode, sodass der vollständige Code wie folgt aussieht: –

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

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

2.und Aktivität implementiert OnClickListener

Benutzer-Avatar
Tomer Shetah

<Button
    android:id="@+id/btnOk"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Ok"
    android:layout_marginRight="50dp"
    android:layout_marginLeft="50dp"/>
public class MainActivity extends AppCompatActivity {

    Button btnOk;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnOk = findViewById(R.id.btnOk);
        btnOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "This button ok click.", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

1010910cookie-checkOnclick-Listener zu vordefinierter Schaltfläche hinzufügen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy