Android Klassen

H_G

Neues Mitglied
Hi,

beginne gerade, mich in Java einzuarbeiten. Nun bin ich einem Lehrbuch auf folgendes Beispiel gestoßen:

Java:
package com.example.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity
{
	private TextView nachricht;
	private Button weiter_fertig;
	private EditText eingabe;
	private boolean erster_klick;
	
	
	
	@Override public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.activity_main);
		
		nachricht=(TextView) findViewById(R.id.nachricht);
		weiter_fertig=(Button) findViewById(R.id.weiter_fertig);
		eingabe=(EditText) findViewById(R.id.eingabe);
		
		erster_klick=true;
		
		nachricht.setText(R.string.willkommen);
		
		weiter_fertig.setText(R.string.weiter);
		
		weiter_fertig.setOnClickListener(new OnClickListener() {
			
			@Override public void onClick(View v)
			{
				if(erster_klick)
				{
					nachricht.setText(getString(R.string.hallo,eingabe.getText()));
					eingabe.setVisibility(View.INVISIBLE);
					weiter_fertig.setText(R.string.fertig);
					erster_klick=false;
				}
				else
				{
					finish();
				}
			}
		}
		);
	}
}

Folgendes verstehe ich hier jetzt nicht:

Wo wird z. B. die Instanz R mit new angelebt?
Was bewirkt der bei new OnClickListener() angefügte Block?

mfg

H_G
 
Zuletzt bearbeitet von einem Moderator:
N

nillehammer

Gast
Wo wird z. B. die Instanz R mit new angelebt?
Soweit ich sehe, überhaupt nicht. D.h. die Methoden/Felder, auf die zugegriffen wird sind alle [c]static[/c], also Klassen-Methoden/-Variablen.
Was bewirkt der bei new OnClickListener() angefügte Block?
Die Methode [c]weiter_fertig.setOnClickListener[/c] erwartet als Parameter eine Instanz von OnClickListener. Das ist wohl ein Interface. Der Standardweg wäre, eine Klasse zu schreiben, die dieses Interface implementiert. Der Block tut auch nichts anderes. Es wird sozusagen on the fly die Klassendefinition mit geliefert und gleich eine Instanz davon erstellt. Sowas nennt man anonyme Klassen. Die heißen so, weil sie im Gegensatz zu "richtigen" Klassen keinen Namen haben.

P.S. Ach ja, bei Code bitte immer die Tags benutzen (z.B. für Java-Code das Tassensymbol über dem Texteingabefeld). Wenn Du den Post noch ändern kannst, hole das bitte nach.
 
Zuletzt bearbeitet von einem Moderator:
G

gst

Gast
beginne gerade, mich in Java einzuarbeiten
Das beginnt man aber ganz bestimmt nicht mit Android-Zeug. Wenn ich mir den Code und deine Frage so anschaue scheinen dir noch zahlreiche elementare Grundlagen zu fehlen. Also solltest du erst mal das lernen.
 

Neue Themen


Oben