0

在我的程序中,我有两个AutoCompleteTextViewaButton和 aTableLayout来显示某个结果。在这个程序中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根本没有出现。有人可以帮忙吗?提前致谢。

4

2 回答 2

0

我觉得你可能会犯错,试着改变

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

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

于 2013-04-08T14:44:09.813 回答
0

您只计算一次按钮的可见性,在开始时,文本肯定是空的,所以按钮消失永远不会返回。听起来您应该聆听文本中的变化并在它们发生时计算您的按钮可见性。

类似于(假设您的 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) {}
    });
于 2013-04-08T14:52:00.647 回答