Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从自定义ArrayAdapter内部关闭对话框_Android_Dialog_Android Arrayadapter - Fatal编程技术网

Android 从自定义ArrayAdapter内部关闭对话框

Android 从自定义ArrayAdapter内部关闭对话框,android,dialog,android-arrayadapter,Android,Dialog,Android Arrayadapter,我有一个自定义对话框片段,里面有一个自定义的ArrayAdapter。每个列表项都有3个按钮。单击每个按钮,我就有一个执行函数的OnClickListener()。函数完成后,我需要关闭对话框。因为这是在ArrayAdapter中完成的,所以我不能像在对话框片段中那样调用discouse()。我尝试为对话框片段内的按钮设置一个OnClickListener(),但得到了一个空指针 我不知道如何从自定义arrayAdapter中获取对对话框片段的引用。onclick事件必须发生在ArrayAdap

我有一个自定义对话框片段,里面有一个自定义的ArrayAdapter。每个列表项都有3个按钮。单击每个按钮,我就有一个执行函数的
OnClickListener()
。函数完成后,我需要关闭对话框。因为这是在ArrayAdapter中完成的,所以我不能像在对话框片段中那样调用
discouse()
。我尝试为对话框片段内的按钮设置一个
OnClickListener()
,但得到了一个空指针

我不知道如何从自定义arrayAdapter中获取对对话框片段的引用。onclick事件必须发生在ArrayAdapter内部,因为它使用特定于该列表项的信息。任何帮助都将不胜感激。多谢各位

对话框片段:

public class SavedArmyDialog extends DialogFragment {
View mView;

public static SavedArmyDialog newInstance() {
    SavedArmyDialog fragment = new SavedArmyDialog();
    return fragment;
}

public SavedArmyDialog() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    mView =  inflater.inflate(R.layout.custom_army_list, container, false);

    CustomArmyObjData customArmyObjData = new CustomArmyObjData();
    ArrayList<CustomArmy> customArmyArray = customArmyObjData.getCustomArmyArray(getActivity());

    CustomArmyAdapter adapter = new CustomArmyAdapter(getActivity(), customArmyArray);

    ListView armyList = (ListView) mView.findViewById(R.id.armyListView);
    armyList.setAdapter(adapter);


    return mView;
}


}
我不知道如何从中获取对对话框片段的引用 在自定义阵列适配器内部

还有一个方法,需要在想要关闭
DialogFragment
时调用它

在您的情况下,请按照以下步骤操作:

1.
CustomArmyAdapter
类构造函数添加一个参数,该类构造函数是
SavedArmyDialog
的类型:

private SavedArmyDialog objSavedArmyDialog;
public CustomArmyAdapter(SavedArmyDialog objSavedArmyDialog,...){
 this.objSavedArmyDialog=objSavedArmyDialog;
 ....
}
2.Now class
objSavedArmyDialog.dismise()
onClick按钮的

 public void onClick(View v) {
   ....
   //need to close the dialog from here
   objSavedArmyDialog.dismiss();
  }
3.通过将当前类上下文传递为以下内容来创建
CustomArmyAdapter
类对象:

 CustomArmyAdapter adapter=new CustomArmyAdapter(SavedArmyDialog.this,
                                                  getActivity(), 
                                                  customArmyArray);
我不知道如何从中获取对对话框片段的引用 在自定义阵列适配器内部

还有一个方法,需要在想要关闭
DialogFragment
时调用它

在您的情况下,请按照以下步骤操作:

1.
CustomArmyAdapter
类构造函数添加一个参数,该类构造函数是
SavedArmyDialog
的类型:

private SavedArmyDialog objSavedArmyDialog;
public CustomArmyAdapter(SavedArmyDialog objSavedArmyDialog,...){
 this.objSavedArmyDialog=objSavedArmyDialog;
 ....
}
2.Now class
objSavedArmyDialog.dismise()
onClick按钮的

 public void onClick(View v) {
   ....
   //need to close the dialog from here
   objSavedArmyDialog.dismiss();
  }
3.通过将当前类上下文传递为以下内容来创建
CustomArmyAdapter
类对象:

 CustomArmyAdapter adapter=new CustomArmyAdapter(SavedArmyDialog.this,
                                                  getActivity(), 
                                                  customArmyArray);

请用代码示例和logcat清楚地解释这个问题。显示来自自定义ArrayAdapter的对话框片段?请在显示的位置显示代码,并希望关闭在对话框片段和自定义阵列适配器的相关代码中添加的itI。我还可以在需要关闭对话框的地方添加注释。谢谢。@EphraimSchmitt:请看我的答案,它可能会帮助您用代码示例和logcat清楚地解释这个问题。显示来自自定义ArrayAdapter的对话框片段?请在显示的位置显示代码,并希望关闭在对话框片段和自定义阵列适配器的相关代码中添加的itI。我还可以在需要关闭对话框的地方添加注释。谢谢。@EphraimSchmitt:看看我的答案,也许对你有帮助