2016-08-08 63 views
0

Wenn ich auf die Methode direkt auf die PagerAdapter Erstellung zugreifen, habe ich die getViewAtPosition() Methode. Wenn ich es mit der Referenz versuche, kann ich nicht. Was kann ich tun, um durch die Referenz Assacces zu bekommen?Zugriff auf Methode durch Referenz

Hier kann ich: 1: enter image description here

Hier kann ich nicht: 2: enter image description here

public class CardapioRU extends Fragment { 

private ViewPager mPager; 
private PagerAdapter mPagerAdapter; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.view_pager_ru, container, false); 

    mPager = (ViewPager) rootView.findViewById(R.id.pager); 
    mPagerAdapter = new PagerAdapterRU(inflater); 
    mPager.setAdapter(mPagerAdapter); 
    return rootView; 
} 

} 

.

public class PagerAdapterRU extends PagerAdapter { 

private View domingo = null; 
private View segunda = null; 

@SuppressLint("InflateParams") 
public PagerAdapterRU(LayoutInflater inflater) { 
    domingo = inflater.inflate(R.layout.ru_domingo, null); 
    segunda = inflater.inflate(R.layout.ru_segunda, null); 
} 

public View getViewAtPosition(int position) { 
    View view = null; 
    if (position == 0) { 
     view = domingo; 
    } 
    if (position == 1) { 
     view = segunda; 
    } 
    ; 
    return view; 
}; 

@Override 
public Object instantiateItem(View collection, int position) { 
    View view = getViewAtPosition(position); 
    ((ViewPager) collection).addView(view, 0); 
    return view; 
} 

@Override 
public int getCount() { 
    return 2; 
} 
+0

Sind Sie sicher, dass Sie nicht können und es nicht nur eine IDE-Eigenart ist? – apokryfos

+0

Ya, könnte nur android Studio sein. Manchmal wird es einfach nicht helfen, es hineinzulegen, manchmal muss ich es komplett einbinden und kompilieren, bevor es es für gültig hält. –

+0

war kein IDE-Problem, Eclipse ist in Ordnung, die Antwort ist oben, danke –

Antwort

2

getViewAtPosition() ist ein Verfahren zur PagerAdapterRU.

Auf dem ersten Screenshot rufen Sie eine Methode direkt auf Ihrer PagerAdapterRU Instanz, aber auf dem zweiten Screenshot rufen Sie es auf eine PagerAdapter.

Es spielt keine Rolle, wie Sie es initialisiert haben, Sie haben es als PagerAdapter deklariert, so haben Sie Zugriff auf die Methoden eines PagerAdapter.

Um Zugriff auf die Methoden der Unterklasse zu erhalten, deklarieren Sie sie mit dem Typ der Unterklasse.

folgende Änderung:

private PagerAdapter mPagerAdapter; 

Um dies:

private PagerAdapterRU mPagerAdapter; 

Und Sie werden auf mPagerAdaptergetViewAtPosition() der Lage sein, zu rufen.

+1

Wahrscheinlich ist das die Antwort. Mangel an Aufmerksamkeit von mir. Ich werde später testen, wenn ich zu Hause bin, und wenn ja, akzeptiere ich die Antwort. –

+0

das ist es, danke –