5

Ich habe eine Aktivität, die ein Fragment enthält, in diesem Fragment gibt es eine Schaltfläche, wenn darauf geklickt wird, wird ein Dialogfeld ausgeblendet.Fragmente in Viewpager, keine Ansicht gefunden Fehler

In diesem Dialogfeld befindet sich ein Viewpager, in dem einige Fragmente angezeigt werden.

Hier sind der Code und der Fehler, bitte sparen Sie Ihre wertvolle Zeit, um mir zu zeigen, wo ich falsch liege. Ich schätze deine Hilfe sehr.

MainActivity.class

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 

public class MainActivity extends FragmentActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    FragmentManager fm = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fm.beginTransaction(); 

    MyFragment fragment = new MyFragment(); 

    fragmentTransaction.add(R.id.container, fragment); 

    fragmentTransaction.commit(); 

} 
} 

MyFragment.class

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.Button; 

public class MyFragment extends Fragment { 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_sandbox, container, false); 
    Button button = (Button) v.findViewById(R.id.button); 

    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      PagerDialog dialog = new PagerDialog(getActivity(), 
        getChildFragmentManager()); 
      dialog.show(); 
     } 
    }); 
    return v; 
} 
} 

PagerDialog.class

import android.app.Dialog; 
import android.content.Context; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 

public class PagerDialog extends Dialog { 

ViewPager mViewPager; 
FragmentStatePagerAdapter mAdapter; 
FragmentManager mFragmentManager; 

public PagerDialog(Context context, FragmentManager fm) { 
    super(context); 
    mFragmentManager = fm; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dialog); 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mAdapter = new MyAdapter(mFragmentManager); 
    mViewPager.setAdapter(mAdapter); 

} 

private class MyAdapter extends FragmentStatePagerAdapter { 

    public MyAdapter(FragmentManager fm) { 
     super(fm); 

    } 

    @Override 
    public Fragment getItem(int index) { 
     return new DummyFragment(); 
    } 

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

} 

private class DummyFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, 
      @Nullable ViewGroup container, 
      @Nullable Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.fragment_dummy_layout, 
       container, false); 
     return v; 
    } 
} 
} 

Er re die dialog.xml ist:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

</LinearLayout> 

hier die Fehler

03-06 19:43:38.487: E/AndroidRuntime(1167): FATAL EXCEPTION: main 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): Process: com.me.sandbox, PID: 1167 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): java.lang.IllegalArgumentException: No view found for id 0x7f05003d (com.mochimira.sandbox:id/pager) for fragment DummyFragment{b2d9f8c8 #0 id=0x7f05003d} 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:939) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.support.v4.view.ViewPager.populate(ViewPager.java:1073) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.support.v4.view.ViewPager.populate(ViewPager.java:919) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.View.measure(View.java:16497) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.View.measure(View.java:16497) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.View.measure(View.java:16497) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.View.measure(View.java:16497) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.View.measure(View.java:16497) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.View.measure(View.java:16497) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.Choreographer.doFrame(Choreographer.java:544) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.os.Handler.handleCallback(Handler.java:733) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.os.Handler.dispatchMessage(Handler.java:95) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.os.Looper.loop(Looper.java:136) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at android.app.ActivityThread.main(ActivityThread.java:5017) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at java.lang.reflect.Method.invokeNative(Native Method) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at java.lang.reflect.Method.invoke(Method.java:515) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
 
03-06 19:43:38.487: E/AndroidRuntime(1167): \t at dalvik.system.NativeStart.main(Native Method

+0

Gibt es etwas falsch in der Art, wie ich fragen? Ich habe keine Antwort von dir. –

+0

Hm nein, ich sehe nichts falsch mit Ihrer Frage. Aber ich sehe keinen offensichtlichen Fehler tbh. Das Problem scheint der ViewPager zu sein, der von Ihrem Dialog nicht gefunden werden kann. Können Sie versuchen, dem Dialog anstelle des Pager einen Button oder eine TextView hinzuzufügen? – Deutro

+0

Doppelklicken Sie auf diese Fehlerzeile im Logcat, um Sie zu der Zeile zu bringen, die diesen Fehler verursacht, und geben Sie dann hier die Codezeile ein: –

Antwort

8

ich eine Lösung für das Problem gefunden haben und Ihre Klassen so modifiziert, dass dieser Fehler nicht mehr auftritt.

Der einzige große Unterschied war, dass man eine DialogFragment anstelle eines Dialog verwenden sollte, auf diese Weise haben Sie Zugriff getChildFragmentManager() anrufen und die richtige FragmentManager vom DialogFragment erhalten.

Auch wenn Sie getChildFragmentManager() die zuvor verwendeten, wurde sie von MyFragment kommen und die PagerDialog Klasse war kein Kind Fragment in MyFragment.

Ich habe den Code unten getestet, und es sollte jetzt gut funktionieren.

MyFragment

public class MyFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_sandbox, container, false); 
     Button button = (Button) v.findViewById(R.id.button); 

     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       DialogFragment newFragment = PagerDialog.newInstance(); 
       newFragment.show(getChildFragmentManager(), "dialog"); 
      } 

     }); 

     return v; 
    } 
} 

PagerDialog

public class PagerDialog extends DialogFragment { 

    public static PagerDialog newInstance() { 
     return new PagerDialog(); 
    } 

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

     ViewPager mViewPager = (ViewPager) v.findViewById(R.id.view_pager); 

     /* Use childFragmentManager here provided from the PagerDialog */ 
     MyAdapter mAdapter = new MyAdapter(getChildFragmentManager()); 
     mViewPager.setAdapter(mAdapter); 

     return v; 
    } 

    private class MyAdapter extends FragmentStatePagerAdapter { 

     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int index) { 
      return new DummyFragment(); 
     } 

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

    } 
} 

DummyFragment

public class DummyFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.fragment_dummy_layout, container, false); 
     return v; 
    } 

} 

fragment_sandbox.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Test Fragment Dialog Pager" 
     android:textSize="24sp" 
     android:padding="20dp" /> 

</LinearLayout> 

dialog_fragment.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Fragment Dialog Title Text " 
     android:padding="10dp" 
     android:textColor="#333" 
     android:textSize="24sp"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/view_pager" 
     android:layout_width="match_parent" 
     android:layout_height="200dp"/> 

</LinearLayout> 

fragment_dummy_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Fragment Dummy Text" 
     android:textSize="24sp" 
     android:textColor="#ff0000"/> 

</LinearLayout> 
+0

Vielen Dank, ich werde den Code und das Feedback später testen. –

+1

Ich habe den Code getestet, perfekt, jetzt verstehe ich. Vielen Dank! –

+0

Großartig, herzlich willkommen! –

1

ich in Google einen Blogeintrag gefunden ist, heißt es, dass viewpager nicht auf Dialog funktioniert. Es sagt auch, dass wir stattdessen DialogFragment verwenden sollten. Hier

ist der Link zu diesem Blog: http://www.intellicode.in/viewpager-inside-dialog/

+0

Vielen Dank für Ihre Antwort, ich habe den ViewPager durch ein Fragment ersetzt und es hat den gleichen Fehler: "keine Ansicht gefunden". Um das Problem in meinem Code zusammenzufassen, funktioniert der ViewPager nicht mit Dialog und ein Fragment arbeitet auch nicht mit Dialog. Intuitiv scheint es für mich ein Problem mit den verschachtelten Fragmenten zu geben, aber ich kann es nicht herausfinden. –

1

getChildFragmentManager() ist verfügbar, da API 17, während Sie die v4 Support-Bibliothek verwenden. Versuchen Sie, die Unterstützung Fragment-Manager statt:

PagerDialog dialog = new PagerDialog(getActivity(), 
     getActivity().getSupportFragmentManager()); 
+0

Ich habe versucht, wie Sie sagten, aber der gleiche Fehler. :( –

0

so weit, wir können nicht herausfinden, warum es ein Fehler ist, aber ich habe einen Weg, dies zu umgehen, verwenden Sie diesen Tipp:

Tipp : Wenn Sie ein benutzerdefiniertes Dialogfeld möchten, können Sie stattdessen eine Aktivität als Dialogfeld anzeigen, anstatt die Dialog-APIs zu verwenden. Einfach eine Aktivität erstellen und sein Thema zu Theme.Holo.Dialog im Manifest Elemente gesetzt:

<activity android:theme="@android:style/Theme.Holo.Dialog" 

auf dieser Spitze Basierend ich nicht PagerDialog Dialog machen erweitern, sondern von Fragmente. Fügen Sie dieses Fragment dann in eine Aktivität ein und legen Sie das Thema dieser Aktivität wie oben in AndroidManifest.xml fest.

Der aktualisierte Code für den PagerDialog ist wie folgt.

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class PagerDialog extends Fragment { 

ViewPager mViewPager; 
FragmentStatePagerAdapter mAdapter; 

@Override 
public View onCreateView(LayoutInflater inflater, 
     @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View v = inflater.inflate(R.id.dialog, container, false); 
    mViewPager = (ViewPager) v.findViewById(R.id.pager); 
    mAdapter = new MyAdapter(getFragmentManager()); 
    mViewPager.setAdapter(mAdapter); 
    return v; 
} 

private class MyAdapter extends FragmentStatePagerAdapter { 

    public MyAdapter(FragmentManager fm) { 
     super(fm); 

    } 

    @Override 
    public Fragment getItem(int index) { 
     return new DummyFragment(); 
    } 

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

} 

private class DummyFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, 
      @Nullable ViewGroup container, 
      @Nullable Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.fragment_dummy_layout, 
       container, false); 
     return v; 
    } 
} 
} 

Wenn Sie bessere Lösungen haben oder Sie können herausfinden, warum der ursprüngliche Code in meine Frage nicht funktioniert, bitte mich lehren. Ich bin ein Neuling in Android-Programmierung und ich freue mich, von Ihnen allen zu lernen.

Prost.

1

Die Dialog-Klasse ist die Basisklasse für Dialoge, Sie sollten es jedoch vermeiden, Dialog direkt zu instanziieren. Verwenden Sie stattdessen eine der folgenden Unterklassen:

AlertDialogA Dialogfeld, das einen Titel, bis zu drei Schaltflächen, eine Liste auswählbarer Elemente oder ein benutzerdefiniertes Layout anzeigen kann. Und auch DatePickerDialog oder TimePickerDialog.

Diese Klassen definieren den Stil und die Struktur für Ihren Dialog, aber Sie sollten einen DialogFragment als Container für Ihren Dialog verwenden. Die Klasse DialogFragment bietet alle Steuerelemente, die Sie zum Erstellen Ihres Dialogfelds und zum Verwalten seiner Darstellung benötigen, anstatt Methoden für das Dialog-Objekt aufzurufen.

Für weitere Details gehen Sie bitte durch Dialog Design

1

Der Fehler klingt wie es für den ID-Pager in der XML-Datei für DummyFragment (fragment_dummy_layout.xml) suchen. Ich frage mich, ob dies auf View v = inflater.inflate(R.layout.fragment_dummy_layout, container, false); in der gleichen Datei wie setContentView(R.layout.dialog); aufrufen ist. Haben Sie versucht, DummyFragment in eine eigene Datei zu trennen?

Sie könnten auch versuchen,

View v = getActivity().getLayoutInflater().inflate(R.layout.fragment_dummy_layout, 
     container, false); 
+0

Vielen Dank für Ihre Hilfe! –

1

mit DialogFragment Versuchen und getChildFragmentManager() auf Ihre FragmentPagerAdapter des Konstruktor übergeben.

DialogFragment:

public static class MyDialogFragment extends DialogFragment { 

    private ViewPager viewPager; 
    MySectionPagerAdapter mAdapter; 

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

     viewPager = (ViewPager) view.findViewById(R.id.viewpager); 
     mAdapter = new MySectionPagerAdapter(getChildFragmentManager()); 
     viewPager.setAdapter(mAdapter); 

     return view; 
    } 


} 
+0

Danke! Ich werde es versuchen. –

+0

Sie haben Recht!Jetzt verstehe ich! :) Vielen Dank! –

0

Ich glaube, Sie

Dialog dialog = new Dialog(context); 
verwendet

Steht dies.

1. Schritt: Gebrauchte DialogFragment

public class MyCustomDialog extends DialogFragment { 
    Button mButton; 
    EditText mEditText; 


    List<MasterPageModel> listdata; 
    int position; 
    ViewPager viewpager; 

    public MyCustomDialog(List<MasterPageModel> listdata, int position) { 
     this.listdata = listdata; 
     this.position = position; 
    } 




    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     final View dialog = inflater.inflate(R.layout.dailoglayout, container); 

     final Dialog dailog = getDialog(); 
     dailog.getWindow().setLayout(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 
     dailog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
     dailog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     ImageView closebtn = (ImageView) dialog.findViewById(R.id.closeimgeview); 
     closebtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dailog.dismiss(); 
      } 
     }); 

     viewpager = (ViewPager) dialog.findViewById(R.id.dailog_viewpager); 

     **viewpager.setAdapter(new PagerAdapter(getChildFragmentManager(), listdata));** //This Line is Very important 
     viewpager.setCurrentItem(position); 

     return dialog; 
    } 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Black_NoTitleBar_Fullscreen); //For Full Screen of DailogBox 
    } 

}

2. Schritt: Stellen Sie die FragmentViewPager

public class PagerAdapter extends FragmentPagerAdapter { 

    private final List<MasterPageModel> pages; 

    public PagerAdapter(FragmentManager fm, List<MasterPageModel> pages) { 
     super(fm); 
     this.pages = pages; 
    } 



    @Override 
    public Fragment getItem(int position) { 
     return new ViewPagerFragment(pages.get(position)); 
    } 

    @Override 
    public int getCount() { 
     return pages.size(); 
    } 
} 

3. Schritt: Fragment Ansicht Für ViewPager:

public class ViewPagerFragment extends Fragment { 

    MasterPageModel masteDetailModel; 


    public ViewPagerFragment(MasterPageModel questionItem) { 
     this.masteDetailModel = questionItem; 
    } 

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

     ImageView image = (ImageView) v.findViewById(R.id.pager_imageview); 
     Log.i("Image", "=>" + masteDetailModel.imagelarge); 
     Picasso.with(getActivity()).load(masteDetailModel.imagethumb).error(R.drawable.img).into(image); 

     return v; 
    } 

4. Wie diese dialogfragment verwenden:

MyCustomDialog fragment1 = new MyCustomDialog(listdata, position); 
       EditionDetailActivity act = (EditionDetailActivity) context; 
       FragmentManager fm = act.getSupportFragmentManager(); 
       fragment1.show(fm, ""); 
Verwandte Themen