Ich bin verwirrt über verschiedene Verwendungen von setOnClickListener
in einer Aktivität Schaltflächenaktionen. Ich habe verschiedene Lösungen gefunden, aber ich bin mir sicher, dass es einige beste/schlechtere Ansätze gibt, um es zu implementieren und auch einige "weil".Best Practice für Schaltflächen setOnClickListeners
Ich würde (als Subjekt) verstehen, welche der beste Ansatz ist und welche (und warum) nicht sind.
Anruf eine private Funktion in Aktivität (Klasse) und den Hörer gesetzt und alle wirft darin:
public class MainActivity extends AppCompatActivity { Private Button myButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); OnClickButton(); } private void OnClickButton(){ myButton = (Button)findViewById(R.id.Button1); myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // button actions } }); } }
setzen eine setOnClickListener in Aktivität und dann entsprechende Funktion aufrufen: (In diesem Fall ich weiß nicht auch verstehen, warum die Ansicht als letzte in onClick definiert ist)
public class MainActivity extends AppCompatActivity { Private Button myButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myButton.setOnClickListener(onClickListener); } private OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(final View v) { // button actions } }
- einfach ein sa Funktion mit dem Argument myView durch die Funktion in XML-Datei verknüpfen:
ON MAINACTIVITY.XML ADD:
android:onClick="onButtonClick"
ON MAINACTIVITYCLASS:
public class MainActivity extends AppCompatActivity {
Private Button myButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onButtonClick(View v){
// button actions
}
}
HINWEIS: Ich fand (Notwendigkeit comfirms) Dieser 3 ° Weg ist keine gute Übung, da er nicht in Framesets unterstützt wird.
Wenn Sie eine stärker codierte Lösung haben, fügen Sie sie hinzu.
Bitte versuchen Sie, die guten Praktiken und die Unterschiede in der Praxis zu beseitigen, und warum etwas richtiger ist oder stattdessen eine schlechte Lösung ist.
In der Hoffnung, dies könnte für andere Menschen nützlich sein, Ich schrieb diesen Beitrag auch, weil viele Post, die ich las, sehr alt waren. Danke.
https://stackoverflow.com/questions/30082892/best-way-to-implement-view-onclicklistener-in-android –
Besuch hier schon answerd. https://stackoverflow.com/questions/30082892/best-way-to-implement-view-onclicklistener-in-android –
Ich las diesen Beitrag und versuchte zu erstellen: öffentliche Klasse ActivityMain erweitert Aktivität implementiert View.OnClickListener .. . .aber ich hatte einen Fehler: "Klasse" MainActivity "muss entweder abstrakt erklärt werden oder abstrakte Methode 'onClick (view)' in 'OnClickListener' implementieren – Marco