2014-12-22 1 views
1

Fragment 클래스에는 배열 어댑터로 구현 된 ListView 클래스가 있습니다. ListView을 클릭하면 확인 대화 상자를 표시하고 싶습니다. 다음은 어레이 어댑터에 대한 나의 소스 코드이다.배열 어댑터에 경고 대화 상자를 만들 수 없습니다.

Context _context; 
int layoutResourceId; 
List<OrderListInfo> _listOrderListInfoAdapter = new ArrayList<OrderListInfo>(); 
private String ButtonFlag = ""; 
Activity _activity; 

public OrderDetailListAdatper(Context context, int Resource, 
     List<OrderListInfo> listorderlistInfo) { 
    super(context, Resource, listorderlistInfo); 
    _context = context; 
    _listOrderListInfoAdapter = listorderlistInfo; 
    layoutResourceId = Resource; 

} 
@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    ViewHolder holder = null; 
    LayoutInflater inflater = (LayoutInflater) _context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (row == null) { 
     row = inflater.inflate(layoutResourceId, parent, false); 
     holder = new ViewHolder(); 
     TextView txtProductCode = (TextView) row 
       .findViewById(R.id.txtProductCode); 
Button btnDelete = (Button) row.findViewById(R.id.btnRemove); 
holder.txtProductCode = txtProductCode; 
row.setTag(holder); 
    } else {holder = (ViewHolder) row.getTag();  } 

OrderListInfo _orderListInfoAdapter = _listOrderListInfoAdapter 
      .get(position); 
    holder.txtProductCode.setText(_orderListInfoAdapter.getProductCode() 
      .toString() 
      ); 

holder.btnDelete.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) {     

      AlertDialog.Builder alert = new AlertDialog.Builder(view.getContext()); 

      alert.setMessage("Do you want to delete?"); 
       alert.setNegativeButton("CANCEL", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(
           DialogInterface dialog, 
           int whichButton) { 
          dialog.cancel(); 
         } 
        }); 
      alert.setPositiveButton("OK", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(
           DialogInterface dialog, 
           int whichButton) { 

          OrderDetailListAdatper.this._listOrderListInfoAdapter 
            .remove(position);       OrderDetailListAdatper.thisnotifyDataSetChanged();         
         } 
        }); 
      AlertDialog alertDialog = alert.create(); 
      alertDialog.show(); 
     } 
    }); 
} 
    return row; 
    } 

는 호출이 코드

(AlertDialog alertDialog = alert.create();) , 

후 나는 창을 추가 할 수 없습니다

 android.view.WindowManager$BadTokenException: 

로 오류 - 토큰이 널 (null)은 응용 프로그램이 아닙니다. 나는 당신의 getView에서이 문제

+0

생성자의 arrayadapter에 컨텍스트를 전달 했습니까? –

+0

대신에'View.getContext' .. 대신에'getContext'를 사용하시오. 또는 당신이 지정한 ..와 같이 _context를 사용하고 컨텍스트가 액티비티를 지정했는지 확인하십시오. – Elltz

+0

@Pramod Yadav, @ Elltz 이미 생성자를 게시하고 있습니다. View 대신 getContext를 변경하려고합니다. .getContext하지만 여전히 같은 오류가 발생합니다. – dragullar

답변

1
OrderDetailListAdatper adapter = new OrderDetailListAdatper(Yourclass.this,Resource, 
    listorderlistInfo); 
//set your adapter.. 

를 해결할 수있는 방법

holder.btnDelete.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View view) {     

     AlertDialog.Builder alert = new AlertDialog.Builder((Activity)_context); 

     alert.setMessage("Do you want to delete?"); 
      alert.setNegativeButton("CANCEL", 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(
          DialogInterface dialog, 
          int whichButton) { 
         dialog.cancel(); 
        } 
       }); 
     alert.setPositiveButton("OK", 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(
          DialogInterface dialog, 
          int whichButton) { 

         OrderDetailListAdatper.this._listOrderListInfoAdapter 
           .remove(position);       OrderDetailListAdatper.thisnotifyDataSetChanged();         
        } 
       }); 
     alert.create().show(); // btw show() creates and shows it.. 
    } 
}); 

은 내가 경고 dialog- (빌더) skulled-되지 않는 나이 생각 중 하나 dialogfragment에에 AlertDialog 넣어, 또는에 대한 dialogfragment를 만들 귀하의 확인 ..

관련 문제