2017-09-22 1 views
1

Ich fange gerade an, mit Dialogfragment zu arbeiten, und es gibt eine Menge, die ich nicht kenne. Ich habe einen MainActivity dass auf eine Schaltfläche, indem Sie öffnet ein DialogFragment, dass DialogFragment Ich habe eine andere Taste, die einen SecondDialogFragment öffnet. Die erste funktioniert gut, aber die zweite nicht, ich klicke auf den Knopf in der ersten DialogFragment der Bildschirm verlieren den Fokus mit dem Hintergrund, aber zeigt nichts. Ich weiß wirklich nicht was falsch ist? Ich wäre dankbar, wenn mir jemand helfen könnte.Android SecondDialogFragment zeigt nicht von DialogFragment

Dies ist die erste DialogFragment, wo ich die zweite von onClick anrufen.

DialogFragment.java

ImageButton iconButton = v.findViewById(R.id.user_icon); 
      iconButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        new DSelectIcon().show(getFragmentManager(), "DSelectIcon"); 
       } 
      }); 

SecondDialogFragment.java

public class DSelectIcon extends DialogFragment{ 

    private View v = null; 

    private ImageView Selection; 
    private static final Integer[] items = { R.drawable.image1, 
      R.drawable.image1, R.drawable.image1, 
      R.drawable.image1, R.drawable.image1, 
      R.drawable.image1, R.drawable.image1, 
      R.drawable.image1 }; 



    public DSelectIcon() { 
    } 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     if (savedInstanceState != null) { 
      // Restore last state for checked position. 
     } 
     LayoutInflater inflater = getActivity().getLayoutInflater(); 
     v = inflater.inflate(R.layout.grid_icon_event, null); 
     return createDSelectIcon(v); 
    } 

    private AlertDialog createDSelectIcon(View v) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

     Selection = v.findViewById(R.id.selection); 
     GridView grid = v.findViewById(R.id.grid); 
     // grid.setAdapter(new ArrayAdapter<Integer>(this, R.layout.cell, 
     // items)); 
     grid.setAdapter(new CustomGridAdapter((MainActivity)getActivity(), items)); 
     grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getActivity(), "Clicked postion is" + i, 
         Toast.LENGTH_LONG).show(); 
       //Selection.setImageResource(items[arg2]); 
      } 
     }); 

     return builder.create(); 
    } 

    public class CustomGridAdapter extends BaseAdapter { 
     private Activity mContext; 

     // Keep all Images in array 
     public Integer[] mThumbIds; 

     // Constructor 
     public CustomGridAdapter(MainActivity mainActivity, Integer[] items) { 
      this.mContext = mainActivity; 
      this.mThumbIds = items; 
     } 

     @Override 
     public int getCount() { 
      return mThumbIds.length; 
     } 

     @Override 
     public Object getItem(int position) { 
      return mThumbIds[position]; 
     } 

     @Override 
     public long getItemId(int position) { 
      return 0; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView imageView = new ImageView(mContext); 
      imageView.setImageResource(mThumbIds[position]); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setLayoutParams(new GridView.LayoutParams(70, 70)); 
      return imageView; 
     } 

    } 
} 

Grid_icon_event.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <ImageView 
     android:id="@+id/selection" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <GridView 
     android:id="@+id/grid" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:columnWidth="100dip" 
     android:gravity="center" 
     android:horizontalSpacing="5dip" 
     android:numColumns="auto_fit" 
     android:stretchMode="columnWidth" 
     android:verticalSpacing="40dip" > 
    </GridView> 

</LinearLayout> 

Antwort

0

FEST !!!

Ein dummer Fehler, aber ich vergaß hinzuzufügen:

builder.setView(v); 

Im SecondDialogFragment.java Methode createDSelectIcon

Jetzt sieht es so aus:

public class DSelectIcon extends DialogFragment{ 

    private View v = null; 

    private ImageView Selection; 
    private static final Integer[] items = { R.drawable.image1, 
      R.drawable.image1, R.drawable.image1, 
      R.drawable.image1, R.drawable.image1, 
      R.drawable.image1, R.drawable.image1, 
      R.drawable.image1 }; 



    public DSelectIcon() { 
    } 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     if (savedInstanceState != null) { 
      // Restore last state for checked position. 
     } 
     LayoutInflater inflater = getActivity().getLayoutInflater(); 
     v = inflater.inflate(R.layout.grid_icon_event, null); 
     return createDSelectIcon(v); 
    } 

    private AlertDialog createDSelectIcon(View v) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

     Selection = v.findViewById(R.id.selection); 
     GridView grid = v.findViewById(R.id.grid); 
     // grid.setAdapter(new ArrayAdapter<Integer>(this, R.layout.cell, 
     // items)); 
     grid.setAdapter(new CustomGridAdapter((MainActivity)getActivity(), items)); 
     grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getActivity(), "Clicked postion is" + i, 
         Toast.LENGTH_LONG).show(); 
       //Selection.setImageResource(items[arg2]); 
      } 
     }); 

     builder.setView(v); 


     return builder.create(); 
    } 

    public class CustomGridAdapter extends BaseAdapter { 
     private Activity mContext; 

     // Keep all Images in array 
     public Integer[] mThumbIds; 

     // Constructor 
     public CustomGridAdapter(MainActivity mainActivity, Integer[] items) { 
      this.mContext = mainActivity; 
      this.mThumbIds = items; 
     } 

     @Override 
     public int getCount() { 
      return mThumbIds.length; 
     } 

     @Override 
     public Object getItem(int position) { 
      return mThumbIds[position]; 
     } 

     @Override 
     public long getItemId(int position) { 
      return 0; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView imageView = new ImageView(mContext); 
      imageView.setImageResource(mThumbIds[position]); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setLayoutParams(new GridView.LayoutParams(70, 70)); 
      return imageView; 
     } 

    } 
} 
Verwandte Themen