Dialogbox在android姜饼版本中的.show()上出现错误
我必须为姜饼版本实现多选择对话框 我的主要活动EventCreateActivity扩展了名为BaseActivity的类,该类扩展了SherlockActivity 主要活动Dialogbox在android姜饼版本中的.show()上出现错误,android,actionbarsherlock,android-dialogfragment,android-2.3-gingerbread,fragmentmanager,Android,Actionbarsherlock,Android Dialogfragment,Android 2.3 Gingerbread,Fragmentmanager,我必须为姜饼版本实现多选择对话框 我的主要活动EventCreateActivity扩展了名为BaseActivity的类,该类扩展了SherlockActivity 主要活动 public class EventCreateActivity extends BaseActivity implements OfferDialogFragment.OfferDialogListner{ 在主活动中,我调用了如下对话框,但它在newFragment.show方法上给出了一个错误,该方法名为“类型
public class EventCreateActivity extends BaseActivity implements OfferDialogFragment.OfferDialogListner{
在主活动中,我调用了如下对话框,但它在newFragment.show方法上给出了一个错误,该方法名为“类型EventCreateActivity的getSupportFragmentManager()方法未定义”。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);
}
}
//offerDiagofFragment类
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();
}
FerdialogFragment的公共类扩展了SherlockDialogFragment{
FerdialGlistner的公共接口{
公共无效onDialogPositiveClick(DialogFragment对话框,选中ArrayList);
公共无效onDialogNegativeClick(DialogFragment对话框);
}
OfferDialogListner;
@凌驾
public void-onAttach(android.app.Activity){
超级转速计(活动);
试一试{
mOfferDialogListner=(OfferDialogGlistner)活动;
}catch(ClassCastException e){
抛出新的ClassCastException(activity.toString()+“必须实现OfferDialogListner”);
}
};
@凌驾
创建对话框上的公共对话框(Bundle savedInstanceState){
最终ArrayList mSelectedOfferItems=新ArrayList();
boolean[]selectOfferItems=getArguments().getBooleanArray(“BOOL_提供_数组”);
//将数组数据添加到ArrayList
如果(selectOfferItems[0]){
mSelectedOfferItems.add(0);
}
if(selectOfferItems[1]){
mSelectedOfferItems.add(1);
}
if(selectOfferItems[2]){
mSelectedOfferItems.add(2);
}
if(selectOfferItems[3]){
mSelectedOfferItems.添加(3);
}
AlertDialog.Builder=新建AlertDialog.Builder(getActivity());
builder.setTitle(R.string.artist\u offer\u tv)
.setMultiChoiceItems(R.array.offer_项,selectOfferItems,new DialogInterface.OnMultiChoiceClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int,其中布尔值被选中){
如果(已检查){
mSelectedOfferItems.add(其中);
}否则{
mSelectedOfferItems.remove(Integer.valueOf(which));
}
}
})
.setPositiveButton(R.string.string_ok,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
整数[]selected=mSelectedOfferItems.toArray(新整数[mSelectedOfferItems.size()]);
mOfferDialogListner.onDialogPositiveClick(OfferDialogFragment.this,mSelectedOfferItems);
}
})
.setNegativeButton(R.string.string_cancel,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
mOfferDialogListner.onDialogNegativeClick(OfferDialogFragment.this);
}
});
返回builder.create();
}
}
getSupportFragmentManager
不存在于SherlockActivity
中-您想改用getFragmentManager
。你好,Dave,是的。然后,错误显示“DialogFragment类型中的方法show(FragmentManager,String)不适用于参数(FragmentManager,String)”您的对话框是从SherlockDialogFragment
扩展的吗?否。它扩展了DialogFragment,即使更改为SherlockDialogFragment,错误仍然存在。它说“类型EventCreateActivity的getSupportFragmentManager()方法未定义”哇,是的-因为您使用的是片段,所以您的活动应该从SherlockFragmentActivity
扩展!(我用夏洛克已经有一段时间了)还没有成功。我会把整个代码,有时间它会帮助你的家伙解决这个问题。