1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Probleme mit onFocusChangeListener auf TextViews

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von mrwerner, 25.04.2011.

  1. mrwerner, 25.04.2011 #1
    mrwerner

    mrwerner Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    134
    Erhaltene Danke:
    10
    Registriert seit:
    25.07.2010
    Phone:
    HTC Evo 3D
    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.
     
  2. mrwerner, 25.04.2011 #2
    mrwerner

    mrwerner Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    134
    Erhaltene Danke:
    10
    Registriert seit:
    25.07.2010
    Phone:
    HTC Evo 3D
    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?
     
  3. mrwerner, 26.04.2011 #3
    mrwerner

    mrwerner Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    134
    Erhaltene Danke:
    10
    Registriert seit:
    25.07.2010
    Phone:
    HTC Evo 3D
    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.
     

Diese Seite empfehlen