隐藏一个按钮

时间:2013-04-08 14:41:34

标签: android

在我的计划中,我有两个AutoCompleteTextView一个Button和一个TableLayout来显示某个结果。在此程序中,TableLayout被隐藏,仅在生成结果后出现。

我也希望只有在用户填写Button之后才会显示AutoCompleteTextView,但是在我编写的代码中,我按照我想要的方式运行它。

    calculate = (Button)findViewById(R.id.calculate);
    if(location.getText().toString().length()<1 && destination.getText().toString().length()<1)
    {
        calculate.setVisibility(View.INVISIBLE);
    }
    else
    {
        calculate.setVisibility(View.VISIBLE);
        calculate.setOnClickListener(new View.OnClickListener() {



            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

            if(location.getText().toString().length()<1 || destination.getText().toString().length()<1) 
            {
                Toast.makeText(getApplicationContext(), "Give values before placing a query", Toast.LENGTH_LONG).show();
            }
            else{
                @SuppressWarnings("deprecation")
                String url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="+URLEncoder.encode(location.getText().toString())+"&destinations="+URLEncoder.encode(destination.getText().toString())+"&unit=metric&mode=driving&sensor=false";
                new ReadDistanceJSONFeedTask().execute(url);
                z=+1;
                isNormal=false;
                supportInvalidateOptionsMenu();
                }
            }
        });

    }

在此代码中,Button根本不会出现。有人可以帮忙吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

你只是在开始时计算你的按钮可见性,当文本肯定是空的时候,所以按钮消失永远不会返回。听起来你应listen对文本进行更改,并在发生时计算按钮的可见性。

类似的东西(假设你的AotoCompleteTextView被命名为bob):

    bob.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO your button calculation goes here               
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {}

        @Override
        public void afterTextChanged(Editable s) {}
    });

答案 1 :(得分:0)

我认为你可能会犯错,试着改变

if(location.getText().toString().length()<1 && destination.getText().toString().length()<1)

if(location.getText().toString().length()<1 || destination.getText().toString().length()<1)