Probleme mit onFocusChangeListener auf TextViews

M

mrwerner

Fortgeschrittenes Mitglied
22
Hallo,

Ich möchte eine TextView focusierbar und drückbar machen. Das mit dem drückbar funktioniert wunderbar. Nur beim setzen des Listeners für den Fokus gibts leider Probleme bei folgendem Code:

Layout:
Code:
         <TextView
           style="@style/tc_month_view"
           android:text="56" 
           android:gravity="center_horizontal|top"
           android:clickable="true"
           android:onClick="OnDayClick"
           android:id="@+id/v_dayClick1"
           android:focusable="true"
         />
         <TextView
           style="@style/tc_month_view"
           android:text="56" 
           android:gravity="center_horizontal|top"
           android:clickable="true"
           android:onClick="OnDayClick"
           android:id="@+id/v_dayClick2"
           android:focusable="true"
         />

Activity Code:

Code:
package com.mrwerner.android.syncal;

import com.mrwerner.android.syncal.R;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.Toast;


public class MonthView extends Activity {
    /** Called when the activity is first created. */
    private final static String TAG = SynCalMonthView.class.getSimpleName();
    public OnFocusChangeListener dayFocusListener = new OnFocusChangeListener ()
    {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            Log.d(TAG, "Focus = '" + hasFocus + "' + id=" + v.getId());
        }
        
    };
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_month_view);
        try {
// ohne diese Zeilen wird die Activity geladen
//            View dayView1 = findViewById(R.id.v_dayClick1);
//            dayView1.setOnFocusChangeListener(dayFocusListener);
//            View dayView2 = findViewById(R.id.v_dayClick2);
//            dayView2.setOnFocusChangeListener(dayFocusListener);
        }
        catch (Exception e)
        {
            Log.e(TAG, "ERROR: onCreate: " + e.getMessage());
        }
    }
    
    
    
    public void OnDayClick(View view) {
        switch (view.getId()) {
            case R.id.v_dayClick1:
                Log.d(TAG, "OnButtonClick  - handle click of day");
                Toast.makeText(this, "clicked on day", Toast.LENGTH_SHORT).show();
                break;
            case R.id.v_dayClick2:
                Log.d(TAG, "OnButtonClick  - handle click of day");
                Toast.makeText(this, "clicked on day", Toast.LENGTH_SHORT).show();
                break;
            default:
                Log.i(TAG, "OnButtonClick  - unhandled id=" + view.getId());
                break;
        }
    }
}

Wenn ich das Kommentar vor den 4 Zeilen in der onCreate-Methode entferne krachts beim Laden der Activity. Der try-catch block bringt nichts. Die Exception wird nicht gefangen.

Weiß jemand Rat?

Danke im Voraus :)

PS: In der Entlödung wird die TextView dann wahrscheinlich noch durch ein komplexeres Layout-Konstrukt ersetzt. Das sollte hier allerdings nichts zur Sache tun.
 
Jetzt hab ich das Beispiel mit Buttons anstatt TextViews gebaut. Dort funktioniert das ganze wunderbar. Wo ist da der Unterschied. Meiner Meinung nach sind beides Ableitungen von Views. Warum verhält sich das aber in dieser Hinsicht unterschiedlich?
 
OK! Ich habe jetzt das Problem gelöst. Was die Ursache war kann ich leider nicht feststellen. Ich habe meinen Code nochmal neu Schritt für Schritt aufgebaut. Jetzt funktionierts.

Herzlichen Dank an alle die sich Gedanken darüber gemacht haben.
 

Ähnliche Themen

S
Antworten
4
Aufrufe
995
Sempervivum
S
B
Antworten
4
Aufrufe
495
bb321
B
R
Antworten
3
Aufrufe
1.631
Ritartet
R
Zurück
Oben Unten