Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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 Event - Fatal编程技术网

Android 处理多个事件侦听器的最佳方法

Android 处理多个事件侦听器的最佳方法,android,android-event,Android,Android Event,假设我有一个微调器(带有2个项目)和一个放射组(带有2个单选按钮) 例如,我想在我的布局中显示一个TextView,每个选项的值都不同: 例如,我们有: 纺纱机 男性 女性 单选 真假 因此,我们有4个案例: 男性真实 女假 男假 女性真实 简而言之,每次用户选择这些选项中的任何一个时,我都希望显示不同的文本视图。 我已将事件侦听器放置在微调器和单选按钮上: 微调器侦听器 但这有时有效有时无效-我有很多不同的问题。 我也尝试过类似的选择。但事先没有任何效果 如何在不添加额外按钮的情况下动态处理此

假设我有一个微调器(带有2个项目)和一个放射组(带有2个单选按钮)

例如,我想在我的布局中显示一个TextView,每个选项的值都不同:

例如,我们有:

纺纱机 男性
女性

单选 真假

因此,我们有4个案例:
  • 男性真实
  • 女假
  • 男假
  • 女性真实
  • 简而言之,每次用户选择这些选项中的任何一个时,我都希望显示不同的文本视图。 我已将事件侦听器放置在微调器和单选按钮上:

    微调器侦听器 但这有时有效有时无效-我有很多不同的问题。 我也尝试过类似的选择。但事先没有任何效果


    如何在不添加额外按钮的情况下动态处理此问题?

    您可以创建所需的所有文本视图

    而不仅仅是改变他们的形象

    TextView v = (TextView) findViewById(R.id.text1);
    v.setVisibility(View.GONE); // Or view.VISIBLE, View.INVISIBLE
    
    因此,您可以根据逻辑查看所需的特定文本视图。 或者您可以只创建两个文本视图。。一个为男性/女性,一个为真/假

    我认为最好的办法是在general textView中更改文本。。但我不确定问题出在哪里,因为我没有可以帮助我理解的代码示例


    希望这有帮助:)

    希望这能更好地解释我的评论

    int selectedSpinnerItem = -1;
    int selectedRadioGroupItem = -1;
    
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
            selectedSpinnerItem = position;
            updateViews();
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            selectedSpinnerItem = -1;
            updateViews();
        }
    });
    
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            selectedRadioGroupItem = checkedId;
            updateViews();
        }
    });
    
    public void updateViews(){
        // Here is where you will compare the values 
        // and display the appropriate views.
    }
    
    int-selectedSpinnerItem=-1;
    int selectedRadioGroupItem=-1;
    spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
    @凌驾
    已选择公共位置(AdapterView父视图、视图v、整型位置、长id){
    selectedSpinnerItem=位置;
    updateViews();
    }
    @凌驾
    未选择公共无效(AdapterView父级){
    selectedSpinnerItem=-1;
    updateViews();
    }
    });
    radioGroup.setOnCheckedChangeListener(新的radioGroup.OnCheckedChangeListener(){
    @凌驾
    检查更改后的公共无效(RadioGroup组,int checkedId){
    selectedRadioGroupItem=checkedId;
    updateViews();
    }
    });
    public void updateViews(){
    //这里是比较这些值的地方
    //并显示相应的视图。
    }
    
    谢谢,但这不是我的问题。问题是,我无法找到可靠的方法来同时知道选择了哪个微调器项和哪个单选按钮。不是我将如何更改文本视图。对不起,我不确定我是否理解。。方法spinner.getSelectedItem()和radionButton相同。此链接可能会有所帮助:如果您可以解释并添加代码部分,我将能够帮助您创建一个方法,您将在这两个侦听器中调用该方法,然后检查这两个侦听器的值以确定要显示的视图。@LarryMcKenzie McKenzie我不确定我是否理解您的意思。我尝试过类似的变量。我将尝试您的解决方案,稍后再回来接受/赞成答案。如果这不起作用,请更新您的问题,向我展示您是如何实现它的。绝对!谢谢,我不知道这是否是最佳实践/有效的方法,但你的逻辑很简单,工作也很完美。谢谢:)
    TextView v = (TextView) findViewById(R.id.text1);
    v.setVisibility(View.GONE); // Or view.VISIBLE, View.INVISIBLE
    
    int selectedSpinnerItem = -1;
    int selectedRadioGroupItem = -1;
    
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
            selectedSpinnerItem = position;
            updateViews();
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            selectedSpinnerItem = -1;
            updateViews();
        }
    });
    
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            selectedRadioGroupItem = checkedId;
            updateViews();
        }
    });
    
    public void updateViews(){
        // Here is where you will compare the values 
        // and display the appropriate views.
    }