2017-09-22 7 views
1

방금 ​​대화 상자 조각으로 작업하기 시작했고 잘 모릅니다. 그 DialogFragment에 나는 SecondDialogFragment을 여는 또 다른 버튼이하는 MainActivity 버튼을 클릭하여 DialogFragment를 여는 있습니다. 첫 번째는 정상적으로 작동하지만 두 번째 것은 작동하지 않습니다. 첫 번째 버튼을 클릭하십시오. DialogFragment 화면의 배경에는 포커스가 없지만 아무것도 표시되지 않습니다. 나는 무엇이 잘못되었는지 정말로 모른다. 누군가가 나를 도와 줄 수 있다면 나는 감사 할 것이다.안드로이드 SecondDialogFragment가 DialogFragment에서 보이지 않습니다.

이것은 onClick으로 두 번째를 호출하는 첫 번째 DialogFragment입니다.

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> 

답변

0

고정 !!!

멍청한 실수,하지만 난이 추가 깜빡 :

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; 
     } 

    } 
} 
다음 SecondDialogFragment.java 방법

가 지금은 다음과 같습니다 createDSelectIcon에서

builder.setView(v);