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

ToggleButton Status zur Laufzeit wechseln

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von RoofFire, 25.02.2011.

  1. RoofFire, 25.02.2011 #1
    RoofFire

    RoofFire Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2010
    Hallo Jungs,

    bin nun seit einiger Zeit mit meinen Toggle Buttons beschäftigt. Es geht darum dass ich einen Toggle Button bei der erstellung der Activity je nach Gegebenheit auf on oder off schalten will.

    Dafür gibt es folgende Funktionen:

    toggleButton.toggle();
    toggleButton.setChecked(Boolean);

    Wende ich diese Methoden an bekomme ich ständig eine NullPointerException und ich weiß nicht wieso. Setzte ich die Buttons im xml auf Checked/Unchecked funktioniert es. Jedoch sollte ich den Status der Buttons in der Laufzeit ändern.

    Das ändern von Werten im Programm wenn der Button checked ist oder unchecked funktioniert einwandfrei. Von daher bin ich der meinung das die Buttons richtig eingebunden sind.

    Warum funktionieren diese Methoden nicht? Was mache ich falsch?

    Codeausschnitt:
    Code:
    	
    	private ToggleButton tbOnOff;
    
    	//---------------------------------
    	private String onOff = "0";
    
    	private int typ = Weckzeitberechnung.TYPE_NORMAL;
    	//---------------------------------
    	
    	// True if a new alarm should be made
    	private boolean newAlarm = false;
    	
        /** Called when the activity is first created. */
    	@Override  
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.weckerdetail); 
            
            TimePicker wd = (TimePicker) findViewById(R.id.weckerdetail);
            wd.setIs24HourView(true);
    		System.out.println("starttimechangedlistener");
    		
    		final Bundle extra = this.getIntent().getExtras();
    		if (extra != null && extra.containsKey(IN_PARAM_ID)) {
    			id = extra.getInt(IN_PARAM_ID);
    			Log.d(TAG, "Empfangene Alarm ID = " + id);
    			newAlarm = false;
    		} else {
    			Log.i(TAG, "No ID Recived, build new Alarm");
    			newAlarm = true;
    		}
    		
    		if(!newAlarm) {
    			initFelder();
    		}
    		
    
    		tbOnOff = (ToggleButton) findViewById(R.id.tb_onOff);
    		
    
    		
    		
    		tbOnOff.setOnClickListener(new OnClickListener() {
    		    public void onClick(View v) {
    		        // Perform action on clicks
    		        if (tbOnOff.isChecked()) {
    		        	onOff = "1";
    		        	Log.d(TAG, "Checked");
    		        } else {
    		        	onOff = "0";  
    		        	Log.d(TAG, "Not Checked");
    		        }
    		    }
    		});
    		Log.d(TAG, "Done 1");
        }
    	
    	private void initFelder() {
    		AlarmTime time = Einstellungen.getAlarmTime(this, id);
    
    		
    		if(time.getMontag() == 1) {
    			Log.d(TAG, "do");
    			//this.tbMontag.setChecked(true);
    			try {
    				this.tbMontag.toggle();
    			} catch(Exception e) {
    				e.printStackTrace();
    			}
    
    Hab den Code etwas abgekürzt...
     
  2. swordi, 25.02.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    und dein button hat im xml

    android:id="@+id/tb_onOff"

    ?
     
  3. RoofFire, 25.02.2011 #3
    RoofFire

    RoofFire Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2010
    Ja
    Code:
    
        	  <ToggleButton 
        		android:id="@+id/tb_onOff"
            	           android:layout_width="fill_parent"
            	           android:layout_height="wrap_content"
            	           android:textOn="@string/on"
            	           android:textOff="@string/off"
            	           android:layout_weight="1" />
    
     

Diese Seite empfehlen