好的,所以我正在尝试创建一个能够解决给定空间区域的活动。
我希望用户能够以“m”的“ft”输入尺寸。答案必须以米为单位给出。
是的,现在问题。
下面的代码有效,问题是程序假定num1和num2都等于上次使用的微调器中选择的值。因此,如果您输入100英尺的num1然后输入10米的num2,它会给出1000米的答案,因为您最后选择了m单位。它应该给出92.9的答案......
过去几天一直很头疼......
任何人都可以帮助我!?!
提前致谢 将
private OnClickListener myClickListener = new OnClickListener()
{
public void onClick(View v) {
try{
a=Double.parseDouble(num1.getText().toString());
b=Double.parseDouble(num2.getText().toString());}
catch(Exception e)
{
if(num1.getText().length()==0)
{
num1.setError("please input width");
}
if(num2.getText().length()==0)
{
num2.setError("please input length");
}
}
if (opselected=="ft" && opselected1=="ft")
{c=((a * 0.0929) * (b * 0.0929));tv1.setText(Double.toString(c));}
else if (opselected=="m" && opselected1=="m")
{c=( a * b);tv1.setText(Double.toString(c));}
else if (opselected=="m" && opselected1=="ft")
{c= (a * (b * 0.0929));tv1.setText(Double.toString(c));}
else if (opselected=="ft" && opselected1=="m")
{c= ((a * 0.0929) * b);tv1.setText(Double.toString(c));}
else {tv1.setText("select units");}
//tv1 = (TextView)findViewById(R.id.TextView01);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.car);
tv1 = (TextView)findViewById(R.id.TextView01);
button01 = (Button)findViewById(R.id.Button01);
button01.setText("Display Air Volume");
button01.setOnClickListener(myClickListener);
num1 = (EditText)findViewById(R.id.EditText01);
num2 = (EditText)findViewById(R.id.EditText02);
spinOps = (Spinner)findViewById(R.id.Spinner01);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, ops);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinOps.setAdapter(adapter);
spinOps.setOnItemSelectedListener(this);
spinOps1 = (Spinner)findViewById(R.id.Spinner02);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, ops1);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinOps1.setAdapter(adapter);
spinOps1.setOnItemSelectedListener(this);
}
public void onItemSelected (AdapterView<?> p,View v,int position,long id) {
opselected=ops[position];
opselected1=ops1[position];
tv1.setText("");
}
public void onNothingSelected(AdapterView<?> p) {
tv1.setText("");
}
答案 0 :(得分:0)
在onItemSelected()中,您可以使用v.getId()来查看是否为R.id.Spinner01或R.id.Spinner02调用它,并更新opselected OR opselected1,而不是两者。例如:
public void onItemSelected (AdapterView<?> p,View v,int position,long id) {
if (v.getId() == R.id.Spinner01)
opselected=ops[position];
else if (v.getId() == R.id.Spinner02)
opselected1=ops1[position];
tv1.setText("");
}
答案 1 :(得分:0)
为每个微调器提供其自己的侦听器。例如,您有
的地方 spinOps.setOnItemSelectedListener(this);
将其替换为更像这样的东西:
spinOps.setOnItemSelectedListener(new onItemSelectedListener() {
public void onItemSelected(AdapterView<?> p, View v, int position, long id) {
// get the value entered and the unit selected (e.g., val0, unit0)
}
});
做同样的事情(除了使用val1和unit1,它将是spinOps1 ....)如果是 单位是不同的,选择一个并转换另一个匹配。换句话说,如果 用户选择第一个39英寸,第二个选择2米,你想要 以米为单位,39英寸= 1米,结果为3米。
有关详细信息,请参阅http://developer.android.com/reference/android/widget/AdapterView.OnItemSelectedListener.html。 (只需搜索onItemSelectedListener并获取第一个结果....)
后来 --Jim
PS:是的,我知道,我用的是英寸而不是英尺......保持简单: - )