java - 设置EditText的文本颜色

标签 java android

我有一个在 EditText 的上下文菜单上触发的对话框。 Dialog设置EditText的红、绿、蓝量。问题是当我单击肯定按钮时会发生运行时错误。上面的项目工作正常,它们在 EditText 中设置文本的颜色,但 rgbDialog 没有。

我认为问题出现在这里:

            etRed = (EditText)findViewById(R.id.etRed);
            etGreen = (EditText)findViewById(R.id.etGreen);
            etBlue = (EditText)findViewById(R.id.etBlue);

但我不知道如何正确初始化 etRed、etGreen 和 etBlue。我认为我应该在 findView 之前放置一些东西,例如

etRed = (EditText)Dialog.findViewById(R.id.etRed);

但不知道是什么,因为一切都发生在同一个方法中(onContextItemSelected)

 @Override
public boolean onContextItemSelected(MenuItem item) {

    switch(item.getItemId()){
    case R.id.white:
        temp.setTextColor(Color.WHITE);
        break;
    case R.id.red:
        temp.setTextColor(Color.RED);
        break;
    case R.id.green:
        temp.setTextColor(Color.GREEN);
        break;
    case R.id.rgb:

        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
        dialogBuilder.setTitle("choose the amount of red green and blue");

        LayoutInflater inflater = this.getLayoutInflater();

        dialogBuilder.setView(inflater.inflate(R.layout.colors, null));

        dialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {

                etRed = (EditText)findViewById(R.id.etRed);
                etGreen = (EditText)findViewById(R.id.etGreen);
                etBlue = (EditText)findViewById(R.id.etBlue);

                red=etRed.getText().toString();
                green = etGreen.getText().toString();
                blue = etBlue.getText().toString();

                intRed = Integer.parseInt(red);
                intGreen = Integer.parseInt(green);
                intBlue = Integer.parseInt(blue);



                temp.setTextColor(Color.rgb(intRed, intGreen, intBlue));



            }
        });

        dialogBuilder.setNegativeButton("CANCEL", null);

        AlertDialog alertDialog = dialogBuilder.create();
        alertDialog.show();

        break;
        default:
            break;
    }

    return super.onContextItemSelected(item);

}

EditText 温度设置如下,对于高于 RGB 的项目效果很好

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {


        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context, menu);

        temp = (EditText)findViewById(v.getId());

        super.onCreateContextMenu(menu, v, menuInfo);
    }

最佳答案

您可以使用如下所示的方法从正确的布局中调用 findViewById:

View dialogView = inflater.inflate(R.layout.colors, null);
dialogBuilder.setView(dialogView );

当您在 onClick 中调用 findViewById 时,您可以:

etRed = (EditText)dialogView.findViewById(R.id.etRed);
                etGreen = (EditText)dialogView.findViewById(R.id.etGreen);
                etBlue = (EditText)dialogView.findViewById(R.id.etBlue);

检查这是否有帮助。

关于java - 设置EditText的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25267653/

相关文章:

java - 如何将S3ObjectInputStream转换为Base64 url​​?

java - 如何同步具有约 100 个原始字段的 Java 对象

android - 在@Singleton 上释放 ORMLite 助手

java - 使用 startManagingCursor() 的优缺点是什么

android - AsyncTask 执行()或 executeOnExecutor()?

android - 如何将 ByteArrayInputStream 转换为 jpeg 并在 android 手机上显示?

android - Android 4.2.2 中不显示溢出菜单

java - RecyclerView 不调用 getItemCount

java - Elasticsearch - EdgeNgram + highlight + term_vector = 不好的亮点

java - 将 Arquillian 持久性与无人机/ Graphite 烯结合使用