50 Stimmen

Android Button setOnClickListener Design

Ich entwickle eine Android-Anwendung. Mir ist aufgefallen, dass ich viele Wiederholungen von ähnlichem Code in jeder meiner Klassen erstelle:

Button buttonX = (Button)findViewById(R.id.buttonXName);
// Register the onClick listener with the implementation above
buttonX.setOnClickListener(new OnClickListener() {
    public void onClick(View v)
    {
        //DO SOMETHING! {RUN SOME FUNCTION ... DO CHECKS... ETC}
    } 
});

Ich habe jetzt fünfzehn Schaltflächen und das macht meinen Code hässlich. Hat jemand eine Klasse oder einige Beispiele, wie ich alle diese Codes in etwas effizienter machen kann, so dass ich kann:

  1. Erstellen Sie das Schaltflächenobjekt {Button buttonX (Button)findViewById(R.id.buttonXName);}
  2. Den Hörer einstellen {buttonX.setOnClickListener(new OnClickListener()}
  3. Feststellen, ob sie angeklickt wurde {public void onClick(View v)}
  4. Dann einen spezifischen Code für jede Schaltfläche ausführen?

Wenn jemand etwas weiß, wäre ich dankbar.

1 Stimmen

Pruebe Kotlin

3voto

Matthew Willis Punkte 44427

Ich denke, man kann in der Regel alles, was man braucht, in einer Schleife erledigen, was viel besser ist als viele onClick Methoden, wenn es machbar ist.

Überprüfen Sie t für eine Demonstration, wie man eine Schleife für ein ähnliches Problem verwenden kann. Wie Sie Ihre Schleife konstruieren, hängt von den Bedürfnissen Ihrer onClick Funktionen und wie ähnlich sie einander sind. Das Endergebnis ist viel weniger sich wiederholender Code, der leichter zu pflegen ist.

2voto

yatin deokar Punkte 662

Aktivität umsetzen mit View.OnClickListener wie unten.

public class MyActivity extends AppCompatActivity implements View.OnClickListener {

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

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

        button.setOnClickListener(this);
        button2.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {

        int id = view.getId();

        switch (id) {

            case R.id.button:

                  // Write your code here first button

                break;

             case R.id.button2:

                  // Write your code here for second button

                break;

        }

    }

}

2voto

raju dhiraj Punkte 21
public class MyActivity extends AppCompatActivity implements View.OnClickListener {

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

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

        button.setOnClickListener(this);
        button2.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {

        int id = view.getId();

        switch (id) {

            case R.id.button:

                  // Write your code here first button

                break;

             case R.id.button2:

                  // Write your code here for second button

                break;

        }

    }

}

1voto

Anil Punkte 11
public class MainActivity extends AppCompatActivity  implements View.OnClickListener{

    Button b1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1=(Button)findViewById(R.id.button);
        b1.setOnClickListener(this);
    }

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

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X