ViewPager aus Event veränder.

  • 2 Antworten
  • Letztes Antwortdatum
F

Frank_Neuling

Neues Mitglied
0
Hallo,

eine aus ViewPager (CustomViewPager) abgeleitete Klasse besitzt eine Methode setBlockSwipe. Wie bekomme ich am besten ein verwies aus einer View Klasse um diese Funktion aufzurufen?

CustomViewPager wird in einem Fragment verwendet. Wenn ein Event ausgelöst wird soll die swipefunktionalität deaktiviert werden.

fragment0.xml: CustomColorPicker
CustomColorPicker.java: aus ColorPicker abgeleitete Klasse um die TouchEvents abzufangen.
CustomViewPager.java: Hier soll eine Variable gesetzt werden, um bei einem Event die Touchfunktion zu deaktivieren.

Im Anhang der Gesamte Code.
 

Anhänge

  • BluetoothRGB.zip
    1,4 MB · Aufrufe: 72
Nur nochmal zum Verständnis: du willst aus einem Kindelement (View) in deinem Elternelement (Viewpager) eine Funktion aufrufen ?

Wenn der View jetzt nur dort zum Einsatz kommt, würde ich mir das mit in den Konstruktur des CustomViews mit einbauen.
Sprich du übergibst den ViewPager als Parameter.

Customview cv = new Customview (context, Viewpager);

und im Oncreate des Customviews, speicherst du Ihn zwischen.

private Customviewpager tollerviewpager ;

Und bei dem Event in deinem Customview prüfst du ob der Viewpager auch wirklich da ist und rufst dann die Routine auf.

private void meinevent(){

if (tollerviewpager != null){
tollerviewpager.setBlockSwipe(false);
}
}

Meinst du das in etwa so ???

Falls jetzt dieses Events "system"übergreifend sind gibt es unter Android ein Eventbus Modell welches oft und gern verwendet wird.

Otto ein Eventbus von Square

Otto
 
Ich hatte das Problem einen gültigen Pointer auf den pager zu bekommen.
Die Lösung:
In den Konstruktoren context speichern.
Code:
    private Context context;

    public CustomColorPicker(Context context) {
        super(context);
        this.context=context;
    }

    public CustomColorPicker(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context=context;
    }

    public CustomColorPicker(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.context=context;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
...
    viewPager = (CustomViewPager)((Activity)context).findViewById(R.id.pager);
...
}
 
Zurück
Oben Unten