在我的计划中,我有两个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
根本不会出现。有人可以帮忙吗?提前谢谢。
答案 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)