我想使用颜色选择器更改编辑文本的背景颜色。我有一节课,里面有一个 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/