0

In Android M, muss ich eine ImageButton auf eine bestimmte Ressource im Zeichnungsordner festlegen. Welches wird was von der MainActivity, wo die Sicht wurde deklariert.setImageResource für Bild Schaltfläche aus einer Klasse

Ich habe eine second Activity, die eine Klasse mit der Methode aufrufen muss, um die richtige Ressource mit einer switch-Anweisung auszuwählen.

Ich kann den Verweis auf das ImageButton nicht korrekt in der aufgerufenen Klasse abrufen.

Ich verwende einen Konstruktor, um den Kontext innerhalb der Klasse festzulegen, und habe das ImageButton mRecordImageButton-Objekt public, aber immer noch den nicht aufgelösten Verweis auf Objektfehler für mRecordImageButton. (unable to resolve symbol).

Hier ist der Code in der Klasse. im MainActivity

public ImageButton mRecordImageButton; 

in der ImageButtonProperties.java Klassendatei für jede Hilfe

package twistlogic.com.miwidget; 

    import android.app.Activity; 
    import android.content.Context; 
    import android.widget.ImageButton; 

    public class ImageButtonProperties { 
     Context context; 

     public ImageButtonProperties() { 
       this.context = context;     // constructor 
      } 

     public void ImageButtonSym(EnumLists enumList) { 

      switch (enumList) { 
       case VIDEO_OFF: 
        (ImageButton) ((Activity)context).mRecordImageButton.setImageResource(R.drawable.ic_bluetooth_black_18dp); 
        break; 
      default: 
      } 


     } 

    } 

danken.

////////////////////////////////////////////// ////////////////////////////////

Vielen Dank für die Hilfe, ich lerne gerade so Ihre Hilfe ist geschätzt. Der Konstruktor wird jetzt aufgerufen, wenn ich mit dem Debugger überprüfe, aber ich habe immer noch und ungelösten Bezug auf die Schaltfläche.

Aufruf an den Konstruktor, wie Sie vorgeschlagen, ich habe es nach setContentView

setContentView (twistlogic.com.miwidget.R.layout.activity_camera2_video_image); final ImageButtonProperties properties = neue ImageButtonProperties ((this)); In der Hauptklasse habe ich private ImageButton mRecordImageButton; Ich versuchte auch öffentlich, aber das auch nicht

funktioniert hat mit

Ich nenne: properties.ImageButtonSym (AppButtonStates.VIDEO_REC_ON);

der gerufene Klasse ist

public class ImageButtonProperties { Context Kontext;

public ImageButtonProperties(Context context) { 
    this.context = context;   // constructor 
} 

public void ImageButtonSym(int appButtonStates) { 
    switch (appButtonStates) { 
     case AppButtonStates.VIDEO_REC_ON: 
      (ImageButton) ((Activity)context).mRecordImageButton.setImageResource(twistlogic.com.miwidget.R.mipmap.btn_video_online); 
      break; 

    } 
} 

}

ich als Leitfaden wurde mit ‚wie dem Text von einer anderen Aktivität ändern‘, aber ich habe immer noch die mRecordImageButton als unaufgelöste Referenz. Vielleicht verstehe ich das Context-Objekt nicht. Ich dachte, dass wenn ich den Kontext hätte, dass alle Objekte in der Ansicht zugänglich wären. Ist das ein Fehler beim Verständnis?

Danke,

Antwort

1

Ihr Konstruktor ein Argument fehlt, sollte es aussehen dies folgt aus:

public ImageButtonProperties(Context context) { 
     this.context = context; 
    } 

und in der Aktivität der Konstruktor wie folgt aufrufen:

ImageButtonProperties properties = new ImageButtonProperties(this); 

Die Art und Weise es ist gerade jetzt, dass Sie nichts nichts zuweisen. Ich wäre überrascht, wenn Lint dich nicht davor warnen würde.

Verwandte Themen