Im Folgenden ein Beispiel für meine App MainActivity.java ist:ein Objekt von MainActivity durch View.OnClickListener Passing()
/*imports and other stuffs*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button myButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myButton = (Button) findViewById(R.id.first_button);
// myButton.setOnClickListener(this); by using it, app works as desired.
myButton.setOnClickListener(new MainActivity()); //What's wrong with this piece of codes?
}
@Override
public void onClick(View v) {
if(v.getId()==R.id.first_button){
Toast.makeText(this, "Made it", Toast.LENGTH_SHORT).show();
}
}
Als setOnClickListener() -Methode ein Objekt einer Klasse erfordert, die View.setOnClickListener implementiert, es kann mit einer benutzerdefinierten Klasse behandelt werden implementiert View.setOnClickListener, aber meine Frage, wie ein Anfänger, was ist eigentlich los, während ein Objekt von MainActivity übergeben?
Edit:
Aber wenn ich ein Objekt einer anderen Klasse übergeben und dass man passieren, der Code funktioniert perfekt, nicht wahr? und was ist mit den Codes:
public class MainActivity extends AppCompatActivity {
Button myButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myButton = (Button) findViewById(R.id.first_button);
myButton.setOnClickListener(new MyClass());
}
class MyClass implements View.OnClickListener{
@Override
public void onClick(View v) {
Log.d("buttontest","Working Perfectly");
}
}
}
Wenn Sie möchten, dass Ihre aktuelle Aktivität mit Klicks fertig wird, übergeben Sie einfach "this". Das Übergeben einer neuen Instanz von Aktivitäten wird Ihnen nicht gut tun. Sie sollten OS Aktivitäten für Sie erstellen lassen und nicht selbst spawnen –
@OlegBogdanov das ist was Ich mache es, aber ich kann es nicht herausfinden, was hier Probleme verursacht. –
aber Sie haben vergessen zu sagen, was das Problem ist –