Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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
Java 基于微调器值设置EditText可见性_Java_Android_Android Edittext_Android Spinner_Android Event - Fatal编程技术网

Java 基于微调器值设置EditText可见性

Java 基于微调器值设置EditText可见性,java,android,android-edittext,android-spinner,android-event,Java,Android,Android Edittext,Android Spinner,Android Event,我正在尝试创建此对话框: 当微调器设置为自定义值时,文本编辑应自动显示。我正在调用TextView上的View.setVisible,但不会立即计算可见性,而是等待另一个更改,例如添加另一行或设置日期 守则: ... customText = (EditText) v.findViewById(R.id.edit_custom_text); adapter.setDropDownViewResource(android.R.layout.simp

我正在尝试创建此对话框:

当微调器设置为自定义值时,文本编辑应自动显示。我正在调用TextView上的View.setVisible,但不会立即计算可见性,而是等待另一个更改,例如添加另一行或设置日期

守则:

        ...
        customText = (EditText) v.findViewById(R.id.edit_custom_text);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s.setAdapter(adapter);

        s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                SpinnerItem si = (SpinnerItem) adapterView.getItemAtPosition(i);
                evt.type = si.eventType;
                if (evt.type == EventType.CUSTOM) {
                    customText.setVisibility(View.VISIBLE);
                } else {
                    customText.setVisibility(View.GONE);
                }
            }


            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                //do nothing
            }
        });
我在父视图和View.refreshDrawableState上尝试了View.invalidate,但没有成功:/


编辑:上面的代码已通过调试器验证,我还尝试了View.INVISIBLE。视图不会立即刷新,而是在视图发生另一次更改后才刷新。

这应该可以工作,是不是您的布局不允许/识别此更改

尝试将其更改为“不可见”而不是“消失”,包括“重要”!在布局xml文件中

如果出于某种原因这样做有效,请尝试以下方法:

customText.getParent().requestLayout(); //possibly the parent of that etc

验证您是否实际到达了代码块

比如,你看这个

    s.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView,View selectedItemView, int position, long id) {
    if ("YES".equals(s.getSelectedItem().toString().toUpperCase())) {
    youredittxt.setVisibility(View.VISIBLE);

    } else if ("NO".equals(s.getSelectedItem().toString().toUpperCase())) {
youredittxt.setVisibility(View.INVISIBLE);
}}
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
    }
    });

作为后续问题,您是否在主UI线程中?因为Android有一些内置的特性和策略,所以只有拥有它的线程才能更改UI。 如果您在同一线程之外,请尝试:

customText.getHandler().post(new Runnable() {
    public void run() {
        customText.setVisibility(View.VISIBLE);
    }
});

希望这有帮助!:

我试过了,但运气不好。您是否认为上面的代码应该可以工作,而问题可能在其他地方?有趣的是,其他的更改,比如更改按钮标签,都是有效的……从您显示的代码来看,它确实应该有效。我能想到的唯一一件事是,如果你的声明,你确定你达到了它?比较正在工作,可以在调试器中看到它吗?没有出现异常?是的,语句已到达,调用了setVisible等。感谢您确保我的方法正确-我将尝试重写活动…您实际上是以错误的方式?它是为实例调用的,而不是为所显示的view@PhotonCriticalFatalError_我不明白,这是什么?是否为微调器如果要显示/隐藏edittext的微调器,请按照问题中给出的示例代码进行回答,至少在OnItemSelectedListener中。
customText.getHandler().post(new Runnable() {
    public void run() {
        customText.setVisibility(View.VISIBLE);
    }
});