1

Wenn ich versuche, Pager im Dialogfeld anzeigen, geben Exception wie IllegalArgumentException.View Pager im Dialogfeld funktioniert nicht

dies ist die Ausnahme, die ich gefunden:

04-20 17:54:20.579 21212-21212/com.example.user.sampleproject 
E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.user.sampleproject, PID: 21212 
java.lang.IllegalArgumentException: No view found for id 0x7f0c009e 
(com.example.user.sampleproject:id/pager) for fragment 
PagerFragments{747684C#0 id=0x7f0c009e android:switcher:2131493022:1} 
at 

android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1059)

unten ist der Code, ich bin mit dem DialogWithPager implementiert AppCompatActivity.

package com.example.user.sampleproject.activity; 

import android.app.Dialog; 
import android.content.Context; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.content.ContextCompat; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.AttributeSet; 
import android.view.Gravity; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.Toast; 

import com.example.user.sampleproject.R; 
import com.example.user.sampleproject.fragments.PagerFragments; 

import java.util.ArrayList; 

public class DialogWithPager extends AppCompatActivity { 

    Context context; 
    ArrayList<String> tittles; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     tittles = new ArrayList<>(); 

     tittles.add("sai"); 
     tittles.add("rama"); 
     tittles.add("usha"); 
     tittles.add("venkataramana"); 
     context = DialogWithPager.this; 

     LinearLayout linearLayout = new LinearLayout(context); 

     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 

     linearLayout.setBackgroundColor(ContextCompat.getColor(context, R.color.white)); 
     linearLayout.setLayoutParams(params); 
     linearLayout.setGravity(Gravity.CENTER); 

     Button button = new Button(context); 
     button.setText("click"); 
     button.setTextColor(ContextCompat.getColor(context, R.color.background)); 
     button.setBackgroundColor(ContextCompat.getColor(context, R.color.green)); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       showdialog(); 
      } 
     }); 
     linearLayout.addView(button); 
     setContentView(linearLayout); 

    } 

    private void showdialog() { 

     Dialog dialog = new Dialog(context); 

     dialog.setContentView(R.layout.dialog_viewpager); 

     ViewPager pager = (ViewPager) dialog.findViewById(R.id.pager); 

     dialog.show(); 

     pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { 
      @Override 
      public Fragment getItem(int position) { 
       return new PagerFragments("hi"); 
      } 

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












package com.example.user.sampleproject.fragments; 


    import android.annotation.SuppressLint; 
    import android.os.Bundle; 
    import android.support.v4.app.Fragment; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.FrameLayout; 
    import android.widget.LinearLayout; 
    import android.widget.TextView; 

    import com.example.user.sampleproject.R; 

    import java.util.ArrayList; 
    import java.util.Arrays; 


    /** 
    * A simple {@link Fragment} subclass. 
    */ 
    @SuppressLint("ValidFragment") 
    public class PagerFragments extends Fragment { 




     @SuppressLint("ValidFragment") 
     public PagerFragments(String mealPlansDomain) { 
      // Required empty public constructor 


     } 


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


      return mealplansView; 
     } 


    } 
+0

Versuchen Sie es mit * getChildFragmentManager * statt * getSupportFragmentManager * – David

+0

diese Methode nicht, dass es in der Bibliothek .. "kann u geben geben Super-Klasse-Details?" –

+0

Sicher, ... Entschuldigung es funktioniert nur mit Fragmenten. Würden Sie bitte einen Ausschnitt Ihrer PagerFragments-Klasse bereitstellen? – David

Antwort

0

Verwendung dieser Linie

View mealplansView = inflater.inflate(R.layout.activity_alligned_text_view, container,false); 

statt

View mealplansView = inflater.inflate(R.layout.activity_alligned_text_view, null); 

ich hoffe, das wird helfen.

+0

Ich habe dieses Szenario bereits versucht..aber es funktioniert nicht –

0

Try This

private void showdialog() { 

      Dialog dialog = new Dialog(context); 

      dialog.setContentView(R.layout.dialog_viewpager); 

      ViewPager pager = (ViewPager) dialog.findViewById(R.id.pager); 

      pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { 
       @Override 
       public Fragment getItem(int position) { 
        return new PagerFragments("hi"); 
       } 

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

     dialog.show(); 
     } 
+0

Ich habe dieses Szenario bereits ausprobiert.es funktioniert nicht –

Verwandte Themen