Android App Button reagiert nicht

09/07/2016 20:22 luki.dc#1
Guten Abend zusammen,

Ich bin gerade dran Java in Form von App Programmierung zu erlernen.
Nun habe ich 2 Layouts:
- Login
- Register

Ich starte jeweils auf dem Login Layout.
Ich möchte nun wenn ich auf dem Login Layout auf den Register Button klicke auf das neue Layout Register gelangen.
Das funktioniert soweit auch.

Nun aber für das Register Layout habe ich eine neue Java class erstellt.
Zuerst hatte ich das Problem dass ich findViewById nicht brauchen konnte weil es irgendwie nicht zu der Activity gehört oder so...

Jetzt aber wo ich das gelöst habe, kann ich zwar findViewById anwenden, finde den Button auch aber wenn ich dann das Click Event mache, Funktioniert es einfach nicht...
Was mache ich falsch ?


Code:
package com.example.lukas.bild_liker;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.w3c.dom.Text;

public class RegisterHandler extends AppCompatActivity {

    [MENTION=295804]Override[/MENTION]
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Button btnRegister = (Button) findViewById(R.id.btnRegister);
        btnRegister.setOnClickListener(new View.OnClickListener() {
            [MENTION=295804]Override[/MENTION]
            public void onClick(View v) {
                test();
            }
        });
    }

    public void test() {
        Log.d("test", "onClick: test");
        TextView txtTest = (TextView) findViewById(R.id.txtTest);
        String test = "this is a test";
        txtTest.setText(test);
    }
}
09/08/2016 00:32 algernong#2
Fehlt nicht ein setContentView(R.layout.***)?
09/10/2016 00:17 NotThatBad#3
Quote:
Originally Posted by luki.dc View Post
Guten Abend zusammen,

Jetzt aber wo ich das gelöst habe, kann ich zwar findViewById anwenden, finde den Button auch aber wenn ich dann das Click Event mache, Funktioniert es einfach nicht...
Was mache ich falsch ?


das tut nicht, weil du deiner onClick methode als parameter immer view mitgeben musst, also

public void test(View view) {...}
09/10/2016 15:08 algernong#4
Macht er:
Code:
public void onClick(View v) {
Die test() Methode ruft er selber in seinem Listener auf.
09/10/2016 19:09 NotThatBad#5
oh stimmt ganz übersehen, find die art irgendwie total unübersichtlich, v.a. wenns mal etwas mehr code wird

aber wie du schon gesagt hast, setContentView() fehlt auch
10/01/2016 16:02 XYZ-Cannon#6
Quote:
Originally Posted by luki.dc View Post

Code:
package com.example.lukas.bild_liker;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.w3c.dom.Text;

public class RegisterHandler extends AppCompatActivity {

        [MENTION=295804]Override[/MENTION]
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Button btnRegister = (Button) findViewById(R.id.btnRegister);
        btnRegister.setOnClickListener(new View.OnClickListener() {
                [MENTION=295804]Override[/MENTION]
            public void onClick(View v) {
                test();
            }
        });
    }

    public void test() {
        Log.d("test", "onClick: test");
        TextView txtTest = (TextView) findViewById(R.id.txtTest);
        String test = "this is a test";
        txtTest.setText(test);
    }
}
Code:
public class RegisterHandler extends AppCompatActivity {

        [MENTION=295804]Override[/MENTION]
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout."activity");
    }

    public void test(View view) {
        Log.d("test", "onClick: test");
        TextView txtTest = (TextView) findViewById(R.id.txtTest);
        String test = "this is a test";
        txtTest.setText(test);
    }
}
Wenn du im Android Studio programmierst, kannst das Ganze so abkürzen. In der View musst du nur in der xml die Eigenschaft

Code:
android:onClick="test"
hinzufügen

Code:
<Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Test"
                android:id="@+id/btn_test"
                android:layout_gravity="center"
                android:onClick="test" />
So könnte es dann aussehen. Damit sparst du dir viel Zeit und Code.