it-swarm.com.de

so fügen Sie ein Schaltflächenereignis in Android Studio hinzu

Ich habe also etwas recherchiert und nachdem Sie den Button als Objekt durch den Code definiert haben

private Button buttonname;
buttonname = (Button) findViewById(R.id.buttonnameinandroid) ;

hier ist mein problem

buttonname.setOnClickListener(this); //as I understand it, the "**this**" denotes the current `view(focus)` in the Android program

dann dein OnClick() event ...

Problem:

Wenn ich das "this" eingebe, heißt es:

setOnClickListener (Android.View.view.OnClickListener) in View cannot be applied to (com.helloandroidstudio.MainActivity)

Ich habe keine Idee warum?

hier ist der Code aus der .Java-Datei

import Android.widget.Button;
import Android.widget.EditText;
import Android.widget.TextView;

public class MainActivity extends ActionBarActivity {

    private Button btnClick;
    private EditText Name, Date;
    private TextView msg, NameOut, DateOut;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnClick = (Button) findViewById(R.id.button) ;
        btnClick.setOnClickListener(this);
        Name = (EditText) findViewById(R.id.textenter) ;
        Date = (EditText) findViewById(R.id.editText) ;
        msg = (TextView) findViewById(R.id.txtviewOut) ;
        NameOut = (TextView) findViewById(R.id.txtoutName) ;
        DateOut = (TextView) findViewById(R.id.txtOutDate) ;
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }

    public void onClick(View v)
    {
        if (v == btnClick)
        {
            if (Name.equals("") == false && Date.equals("") == false)
            {
                NameOut = Name;
                DateOut = Date;
                msg.setVisibility(View.VISIBLE);
            }
            else
            {
                msg.setText("Please complete both fields");
                msg.setVisibility(View.VISIBLE);
            }
        }
        return;

    }
43
user2699451

SetOnClickListener (Android.View.view.OnClickListener) in View kann nicht angewendet werden auf (com.helloandroidstudio.MainActivity)

Dies bedeutet mit anderen Worten (aufgrund Ihres aktuellen Szenarios), dass Ihre MainActivity OnClickListener implementieren muss:

public class Main extends ActionBarActivity implements View.OnClickListener {
   // do your stuff
}

Diese:

buttonname.setOnClickListener(this);

bedeutet, dass Sie Listener für Ihren Button "in dieser Instanz"-> zuweisen möchten. Diese Instanz stellt OnClickListener dar. Aus diesem Grund muss Ihre Klasse diese Schnittstelle implementieren.

Ähnlich ist es mit der anonymen Listener-Klasse (die Sie auch verwenden können):

buttonname.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View view) {

   }
});
60
Simon Dorociak
package com.mani.smsdetect;

import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.Button;

public class MainActivity extends Activity implements View.OnClickListener {

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

        //Intialization Button

        btnClickMe = (Button) findViewById(R.id.btnClickMe);

        btnClickMe.setOnClickListener(MainActivity.this);
        //Here MainActivity.this is a Current Class Reference (context)
    }

    @Override
    public void onClick(View v) {

        //Your Logic
    }
}
7
Manikanta Reddy
Button button= (Button)findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
    // click handling code
   }
});
4
Mohamed Zidan
public class MainActivity extends AppCompatActivity implements View.OnClickListener

Wann immer Sie (dies) für Klickereignisse verwenden, muss Ihre Hauptaktivität ocClickListener implementieren. Android Studio erledigt das für Sie, drücken Sie Alt und geben Sie das Wort 'this' ein.

2
Gagandeep

Wenn Sie auf diese Weise eine OnClickListener (oder einen beliebigen Listener) definieren

btnClick.setOnClickListener(this);

sie müssen implement die OnClickListener in Ihrer Activity 

public class MainActivity extends ActionBarActivity implements OnClickListener{
2
codeMagic
package com.mani.helloworldapplication;

import Android.app.Activity;
import Android.os.Bundle;
import Android.support.design.widget.FloatingActionButton;
import Android.support.design.widget.Snackbar;
import Android.support.v7.app.AppCompatActivity;
import Android.support.v7.widget.Toolbar;
import Android.view.View;
import Android.view.Menu;
import Android.view.MenuItem;
import Android.widget.Button;
import Android.widget.TextView;
import Android.widget.Toast;

public class MainActivity extends Activity implements View.OnClickListener {
    //Declaration
    TextView tvName;
    Button btnShow;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        //Empty Window
        super.onCreate(savedInstanceState);
        //Load XML File
        setContentView(R.layout.activity_main);

        //Intilization
        tvName = (TextView) findViewById(R.id.tvName);
        btnShow = (Button) findViewById(R.id.btnShow);

        btnShow.setOnClickListener(this);

    }

    @Override
    public void onClick(View v)
    {
        String name = tvName.getText().toString();
        Toast.makeText(MainActivity.this,name,Toast.LENGTH_SHORT).show();
    }
}
2

Starten Sie Ihren OnClickListener. Wenn Sie jedoch die erste Klammer einrichten, geben Sie new, dann View ein und drücken Sie die Eingabetaste. Sollte so aussehen, wenn Sie fertig sind:

Button btn1 = (Button)findViewById(R.id.button1);

btn1.setOnClickListener(new View.OnClickListener() {            
    @Override
    public void onClick(View v) {
//your stuff here.
    }
});
2
Carter Ray

// Soweit ich es verstehe, bezeichnet das "dies" die aktuelle Ansicht (Fokus) im Android-Programm

Nein, "this" funktioniert nur, wenn Ihre MainActivity, auf die this verweist, den View.OnClickListener implementiert. Hierbei handelt es sich um den Parametertyp für die setOnClickListener()-Methode. Das bedeutet, dass Sie View.OnClickListener in MainActivity implementieren sollten.

1
Egor

Ihre Activity muss View.OnClickListener wie folgt implementieren: 

public class MainActivity extends 
Activity implements View.OnClickListener{
// YOUR CODE
}

Und innerhalb von MainActivity überschreiben Sie die Methode onClick() wie folgt: 

@override
public void onClick (View view){
//here YOUR Action response to Click Button 
}
0
public class MainActivity extends Activity {

    Button button;

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

        button = (Button) findViewById(R.id.submitButton);
        button.setOnClickListener(new MyClass());

    }

    public class MyClass implements View.OnClickListener {

        @Override
        public void onClick(View v) {

        }

    }
}
0
Salim

in der Aktivität Java-Klasse benötigen Sie zuerst eine Methode, um die Ansicht der Schaltfläche als zu finden:

btnSum =(Button)findViewById(R.id.button);

danach auf "Listener" klicken 

btnSum.setOnClickListener(new View.OnClickListener() {

und überschreiben Sie die onClick-Methode für Ihre Funktionalität. Ich habe hier ein voll funktionierendes Beispiel gefunden: http://javainhouse.blogspot.in/2016/01/button-example-Android-studio.html

0
Gagan