代码之家  ›  专栏  ›  技术社区  ›  cham

对话框在android姜饼版本中的.show()上出现错误

  •  0
  • cham  · 技术社区  · 11 年前

    我必须为姜饼版本实现多选对话框。

    我的名为EventCreateActivity的主Activity扩展了名为BaseActivity的类,并扩展了SherlockActivity。

    主要活动

    public class EventCreateActivity extends BaseActivity implements OfferDialogFragment.OfferDialogListner{ 
    

    在主活动中,我如下调用了dialog,但它在newFragment.show方法上给出了一个错误,该方法名为“方法getSupportFragmentManager()对于EventCreateActivity类型是未定义的”。OfferDialogFragment类具有扩展的dialogFragment类别。

    DialogFragment newFragment = new OfferDialogFragment();     
    Bundle databndle = new Bundle();
    boolean offerArr [] = vip.getBooleanOffers(include_offer.getText().toString());
    databndle.putBooleanArray("BOOL_OFFERS_ARRAY", offerArr);
    newFragment.setArguments(databndle);                        
    newFragment.show(getSupportFragmentManager(), "OfferDialogFragment");
    

    如果有人帮我解决这个问题,那就太麻烦了。提前谢谢!

    编辑01:这是EventCreateActivity的完整代码

    public class EventCreateActivity extends BaseActivity implements  OfferDialogFragment.OfferDialogListner{
    
    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DATE_DIALOG_ID:
           // set date picker as current date
           return new DatePickerDialog(this, datePickerListener, 
                         year, month,day);         
        case OFFER_DIALOG_ID: 
    
            DialogFragment newFragment = new OfferDialogFragment();
    
            Bundle databndle = new Bundle();
            boolean offerArr [] = vip.getBooleanOffers(include_offer.getText().toString());
            databndle.putBooleanArray("BOOL_OFFERS_ARRAY", offerArr);
            newFragment.setArguments(databndle);            
    
            newFragment.show(getFragmentManager(), "OfferDialogFragment");
    
            return onCreateDialog(id);
        }
    

    }

    //OfferDialogFragment类

    public class OfferDialogFragment extends SherlockDialogFragment{
    
    public interface OfferDialogListner{
        public void onDialogPositiveClick(DialogFragment dialog, ArrayList<Integer> selected);
        public void onDialogNegativeClick(DialogFragment dialog);
    }
    
    OfferDialogListner mOfferDialogListner;
    
    @Override
    public void onAttach(android.app.Activity activity) {
        super.onAttach(activity);
    
        try{
            mOfferDialogListner = (OfferDialogListner) activity;
        }catch(ClassCastException e){
            throw new ClassCastException(activity.toString() + " must implement OfferDialogListner");
        }
    };
    
    @Override   
    public Dialog onCreateDialog(Bundle savedInstanceState){
    
        final ArrayList<Integer> mSelectedOfferItems = new ArrayList<Integer>();        
    
        boolean [] selectOfferItems = getArguments().getBooleanArray("BOOL_OFFERS_ARRAY");
            // add array data to arrayalist
        if(selectOfferItems[0]){                
            mSelectedOfferItems.add(0);
        }
        if(selectOfferItems[1]){                
            mSelectedOfferItems.add(1);
        }
        if(selectOfferItems[2]){                
            mSelectedOfferItems.add(2);
        }           
        if(selectOfferItems[3]){                
            mSelectedOfferItems.add(3);
        }   
    
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    
        builder.setTitle(R.string.artist_offer_tv)
                .setMultiChoiceItems(R.array.offer_items, selectOfferItems, new DialogInterface.OnMultiChoiceClickListener() {
    
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
    
                        if(isChecked){
                            mSelectedOfferItems.add(which);                         
    
                        }else{
                            mSelectedOfferItems.remove(Integer.valueOf(which));
                        }
    
                    }
                })
                .setPositiveButton(R.string.string_ok , new DialogInterface.OnClickListener() {
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
    
                        Integer[] selected = mSelectedOfferItems.toArray(new Integer[mSelectedOfferItems.size()]);
    
    
                                   mOfferDialogListner.onDialogPositiveClick(OfferDialogFragment.this, mSelectedOfferItems);
                    }
                })
    
                .setNegativeButton(R.string.string_cancel, new DialogInterface.OnClickListener() {
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
    
                        mOfferDialogListner.onDialogNegativeClick(OfferDialogFragment.this);
                    }
                });
    
        return builder.create();
    }
    

    }

    1 回复  |  直到 11 年前
        1
  •  0
  •   Dave    11 年前

    getSupportFragmentManager 中不存在 SherlockActivity -你想使用 getFragmentManager 相反