android - 使用颜色选择器更改 fragment 中编辑文本的背景颜色

标签 android android-fragments android-edittext color-picker

我想使用颜色选择器更改编辑文本的背景颜色。我有一节课,里面有一个 editText。我正在使用 fragment ,并且在 fragment 中正在使用该类的特定 editText。在 fragment 中有一个 ImageView ,单击它会显示颜色选择器对话框。

public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
   super.onViewCreated(view, savedInstanceState);
   EditText et = (EditText) view.findViewById(R.id.txtTest);

   ImageView imgChooser = (ImageView) view.findViewById(R.id.imgPallete);

}

public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    imgChooser.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AmbilWarnaDialog colorpicker = new AmbilWarnaDialog(getContext(), Color.BLACK, new AmbilWarnaDialog.OnAmbilWarnaListener() {

                @Override
                public void onCancel(AmbilWarnaDialog dialog) {

                }

                @Override
                public void onOk(AmbilWarnaDialog dialog, int color) {
                    et.setBackgroundColor(color);
                }
            });
            colorpicker.show();
        }
    });

}

但这不起作用并显示 java.lang.NullPointerException。有人可以帮我吗?我是 android studio 的新手。

错误日志如下

java.lang.NullPointerException
                                                                                                 at com.example.sudeepbajracharya.myapplication.BackGround$1$1.onOk(BackGround.java:61)
                                                                                                 at yuku.ambilwarna.AmbilWarnaDialog$6.onClick(AmbilWarnaDialog.java:179)
                                                                                                 at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:169)
                                                                                                 at android.os.Handler.dispatchMessage(Handler.java:107)
                                                                                                 at android.os.Looper.loop(Looper.java:194)
                                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5371)
                                                                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                                 at java.lang.reflect.Method.invoke(Method.java:525)
                                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
                                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
                                                                                                 at dalvik.system.NativeStart.main(Native Method)

问题显示在第 61 行和 BackGround.java:61 行中
et.setBackgroundColor(颜色);

最佳答案

您的 EditText 引用不正确,请尝试以下代码

private EditText et;
private ImageView imgChooser;

public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
   super.onViewCreated(view, savedInstanceState);
   et = (EditText) view.findViewById(R.id.txtTest);

   imgChooser = (ImageView) view.findViewById(R.id.imgPallete);

}

public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    imgChooser.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AmbilWarnaDialog colorpicker = new AmbilWarnaDialog(getContext(), Color.BLACK, new AmbilWarnaDialog.OnAmbilWarnaListener() {

                @Override
                public void onCancel(AmbilWarnaDialog dialog) {

                }

                @Override
                public void onOk(AmbilWarnaDialog dialog, int color) {
                    et.setBackgroundColor(color);
                }
            });
            colorpicker.show();
        }
    });

}

关于android - 使用颜色选择器更改 fragment 中编辑文本的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47974531/

相关文章:

android - TextInputLayout 和 AutoCompleteTextView

java - 不断变化的数据

java - 想要将 Activity 更改为 Fragment

android - 几乎填满整个屏幕的 map fragment

android - 从 tablayout 中的 fragment 访问父 Activity View ?

android - Android 编辑文本中的美元符号

android - MapFragment 在 getMapAsync(this) 方法中导致 NullPointerException

c++ - Android C++ 手势代码

安卓 : Andengine setting sprite position that works on all devices

android - 有没有办法检测在 EditText 中点击的单词