Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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 在片段上第二次膨胀对话框时出错_Android_Android Fragments_Android Alertdialog - Fatal编程技术网

Android 在片段上第二次膨胀对话框时出错

Android 在片段上第二次膨胀对话框时出错,android,android-fragments,android-alertdialog,Android,Android Fragments,Android Alertdialog,我使用了这个库:为了在我的应用程序上有一个颜色选择器,在实现它之后,我不能多次使用它,当我第二次尝试打开颜色选择器时,它会出现以下错误: FATAL EXCEPTION: main Process: com.example.mobiware.ivaapp, PID: 14147

我使用了这个库:为了在我的应用程序上有一个颜色选择器,在实现它之后,我不能多次使用它,当我第二次尝试打开颜色选择器时,它会出现以下错误:

FATAL EXCEPTION: main
                                                                         Process: com.example.mobiware.ivaapp, PID: 14147
                                                                         java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
                                                                             at android.view.ViewGroup.addViewInner(ViewGroup.java:4656)
                                                                             at android.view.ViewGroup.addView(ViewGroup.java:4497)
                                                                             at android.view.ViewGroup.addView(ViewGroup.java:4437)
                                                                             at android.view.ViewGroup.addView(ViewGroup.java:4410)
                                                                             at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:279)
                                                                             at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:88)
                                                                             at petrov.kristiyan.colorpicker.CustomDialog.onCreate(CustomDialog.java:20)
                                                                             at android.app.Dialog.dispatchOnCreate(Dialog.java:759)
                                                                             at android.app.Dialog.show(Dialog.java:486)
                                                                             at petrov.kristiyan.colorpicker.ColorPicker.show(ColorPicker.java:225)
                                                                             at com.example.mobiware.ivaapp.Activities.AddCategory$1.onClick(AddCategory.java:40)
                                                                             at android.view.View.performClick(View.java:6207)
                                                                             at android.widget.TextView.performClick(TextView.java:11094)
                                                                             at android.view.View$PerformClick.run(View.java:23639)
                                                                             at android.os.Handler.handleCallback(Handler.java:751)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                             at android.os.Looper.loop(Looper.java:154)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:6688)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
代码

public class fragment_category extends Fragment {

private SQLiteHandler db;
Spinner categoriesspinner;
ColorPicker colorPicker;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View RootView = inflater.inflate(R.layout.fragment_addcategory, container, false);

    db = new SQLiteHandler(getApplicationContext());
    categoriesspinner = (Spinner) RootView.findViewById(R.id.spinnercategory);

    colorPicker = new ColorPicker(getActivity());

    Button color = (Button) RootView.findViewById(R.id.color);
    color.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            colorPicker.show();
        }
    });

    return RootView;
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    getActivity().setTitle("Adicionar categoria");

    colorPicker.setOnChooseColorListener(new ColorPicker.OnChooseColorListener() {
        @Override
        public void onChooseColor(int position, int color) {
            Log.d("color:", String.valueOf(color));
            Log.d("color:", String.valueOf(position));
        }

        @Override
        public void onCancel(){
        }
    });

    loadCategoriesSpinner();
}

public void loadCategoriesSpinner() {
    db = new SQLiteHandler(getApplicationContext());

    List<String> categories = db.getAllCategory();

    ArrayAdapter<String> dataAdapterCategories = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, categories);

    dataAdapterCategories.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    categoriesspinner.setAdapter(dataAdapterCategories);
}
 }
公共类片段\u类别扩展片段{
私有SQLiteHandler数据库;
纺纱机;
采色器采色器;
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u addcategory,container,false);
db=新的SQLiteHandler(getApplicationContext());
categoriesspinner=(微调器)RootView.findViewById(R.id.spinnercategory);
colorPicker=新的colorPicker(getActivity());
按钮颜色=(按钮)RootView.findviewbyd(R.id.color);
color.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
colorPicker.show();
}
});
返回RootView;
}
@凌驾
已创建视图上的公共void(视图,@Nullable Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
getActivity().setTitle(“Adicionar categoria”);
colorPicker.setOnChooseColorListener(新的colorPicker.OnChooseColorListener(){
@凌驾
公共void onChooseColor(int位置,int颜色){
Log.d(“颜色:”,String.valueOf(颜色));
Log.d(“颜色:”,String.valueOf(位置));
}
@凌驾
公开作废{
}
});
LoadCategoriesPinner();
}
public void LoadCategoriesPinner(){
db=新的SQLiteHandler(getApplicationContext());
列表类别=db.getAllCategory();
ArrayAdapter dataAdapterCategories=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u微调器\u项,类别);
dataAdapterCategories.setDropDownViewResource(android.R.layout.simple\u spinner\u dropdown\u项目);
categoriesPinner.setAdapter(dataAdapterCategories);
}
}
我在这里发布之前搜索过,但无法以任何方式修复此错误。
谢谢。

是否可能(每次单击时)多次调用
show()
,而颜色选择器不支持此功能

如果这是问题所在,您可以声明为每次单击创建一个新的颜色选择器。例如:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View RootView = inflater.inflate(R.layout.fragment_addcategory, container, false);

    db = new SQLiteHandler(getApplicationContext());
    categoriesspinner = (Spinner) RootView.findViewById(R.id.spinnercategory);

    Button color = (Button) RootView.findViewById(R.id.color);
    color.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            colorPicker = new ColorPicker(getActivity());
            colorPicker.show();
        }
    });

    return RootView;
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    getActivity().setTitle("Adicionar categoria");

    if (colorPicker != null) {
        colorPicker.setOnChooseColorListener(new ColorPicker.OnChooseColorListener() {
            @Override
            public void onChooseColor(int position, int color) {
                Log.d("color:", String.valueOf(color));
                Log.d("color:", String.valueOf(position));
            }

            @Override
            public void onCancel() {
            }
        });
    }

    loadCategoriesSpinner();
}