| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Android Development, Java Einstieg im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Ich möchte mir dieses Thema gerne näher bringen. Das Problem ist/war das ich kein Java kann. Hatte zwar viel ...
![]() |
| | #1 (permalink) |
| Registriert seit: 25.11.06 ![]() Likes: 0 | Anzeige Ich möchte mir dieses Thema gerne näher bringen. Das Problem ist/war das ich kein Java kann. Hatte zwar viel Erfahrung mit C und Python, aber um da nicht total ins kalte Wasser zu fallen, habe ich mir teilweise dieses Turoial Galileo Computing :: Java ist auch eine Insel – durchgelesen, da ich das bei C schon sehr gut fande. Mein Problem ist nun das ich mit diesem Codebeispiel trotzdem noch nicht so zurecht komme: Code: package net.learn2develop.HelloMobiForge;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class HelloMobiForge extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//---the button is wired to an event handler---
Button btn1 = (Button)findViewById(R.id.btnClickMe);
btn1.setOnClickListener(btnListener);
}
//---create an anonymous class to act as a button click listener---
private OnClickListener btnListener = new OnClickListener()
{
public void onClick(View v)
{
Toast.makeText(getBaseContext(),
"Hello, readers of MobiForge!",
Toast.LENGTH_LONG).show();
}
};
} Code: (Button)findViewById(R.id.btnClickMe); Was ist "R"? Es handelt sich wohl dabei um ein Objekt, welches die id's beinhaltet, aber warum heißt es "R"? Code: //---create an anonymous class to act as a button click listener---
private OnClickListener btnListener = new OnClickListener()
{ |
| | |
| | #2 (permalink) |
| Member of Honour ![]() Registriert seit: 28.05.10 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 210 | zu 1 Button ist eine Klasse ... da die besagte funktion nicht immer ein objekt der klasse Button zurück liefert, muss man dem compiler sagen: das was da raus kommt bitte als Button behandeln ... nennt man "casten" .... zu 2 R ist eine klasse im namespace android zu 3 OnClickListener ist ein Interface ... um es "mal eben" zu implementieren braucht man keine normale klasse ... eine anonyme klasse reicht ... (man will nur eine methode angeben die das besagte ereignis behandeln soll ... diese anonyme klasse hat keine weitere aufgabe)
__________________ Code: :(){ :|:& };: Geändert von GrafZahl (19.09.11 um 13:31 Uhr) Grund: typo |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 25.11.06 ![]() Likes: 0 | Zu 1 Aber wenn ich genau weiß dass unter dieser ID ein Button liegt, könnte ich theoretisch das "(Button)" auch weg lassen, oder? Wenn ja, warum macht man das nicht? edit: hm, ne kann ich irgendwie nicht. Aber warum?^^ Zu 3 Ich glaube ich verstehe das. Das heißt "btnListener" ist dann eine Reference die eine "OnClickListener" Methode beinhaltet? Bei "btn1.setOnClickListener" ist doch "setOnClickListener" eine Methode in der Klasse "Button" oder? Wenn ja, müsste ich dann nicht in dieser Reference Button | Android Developers diese Methode und auch andere finden? Geändert von gugugs (19.09.11 um 13:59 Uhr) |
| | |
| | #4 (permalink) |
| Themenstarter Registriert seit: 25.11.06 ![]() Likes: 0 | In diesem Beispiel: Code: package test.test;
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;
public class HelloActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Widgets
Button ok_button = (Button)findViewById(R.id.my_button);
EditText text1 = (EditText)findViewById(R.id.test1);
EditText text2 = (EditText)findViewById(R.id.test2);
ok_button.setOnClickListener(klick_listener);
}
private OnClickListener klick_listener = new OnClickListener() {
public void onClick(View v) {
//text1 Variable???
}
};
} Oder muss ich diese mit Code: EditText text1 = (EditText)findViewById(R.id.test1); |
| | |
| | #5 (permalink) |
| Senior Member | zu 1 Gerade weil du weißt daß es ein Button ist machst du das casting. Du willst ja im Anschluß auch die Methoden der Klasse Button benutzen. Mit der Methode findViewById könnte man genauso eine CheckBox finden. zu 3 Nein, btnListener ist ein Objekt von OnClickListener welches die Methode onClick implementiert hat. Jein, die Klasse Button erweitert wiederum andere Klassen welche eine davon die Methode setOnClickListener implementiert hat.
__________________ [HaBo] @ Facebook - Gefällt mir! |
| | |
| | #6 (permalink) |
| Senior Member | Natürlich musst das EditText-Objekt nochmal neu holen. Die Variable text1 ist in der Methode der anonymen Klasse nicht sichtbar. Das sind aber schon Java-Basics.
__________________ [HaBo] @ Facebook - Gefällt mir! |
| | |
| | #7 (permalink) | |||
| Registriert seit: 05.05.07 ![]() Likes: 0 | Zitat:
Zitat:
Zitat:
| |||
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| JAVA - Android (Eclipse), int to float | MSeiz5 | Code Kitchen | 1 | 25.06.11 10:16 |
| C++ Win32 Gui-Development | sw33tlull4by | Code Kitchen | 5 | 04.11.10 23:50 |
| GTK+ 2.0 development headers | RemoteC | Linux/UNIX | 4 | 10.06.07 10:42 |
| Java Einstieg.. wie geht das? | [starfoxx] | Code Kitchen | 28 | 19.02.06 19:07 |
| Java-Einstieg | gTw34k3r | Code Kitchen | 25 | 06.01.06 19:45 |