Java 当两个微调器等于特定字符串时,如何允许调用函数?
我制作了两个纺纱机,它们都由不同类型的重量组成。这些是“磅”“石”“克”“公斤”。我需要能够检查用户从这两个微调器中选择的选项,然后根据他们选择的调用函数。例如,如果第一个微调器等于“Lbs”,第二个等于“Grams”,那么将调用一个函数 这是我的琴弦Java 当两个微调器等于特定字符串时,如何允许调用函数?,java,android,android-studio,mobile,Java,Android,Android Studio,Mobile,我制作了两个纺纱机,它们都由不同类型的重量组成。这些是“磅”“石”“克”“公斤”。我需要能够检查用户从这两个微调器中选择的选项,然后根据他们选择的调用函数。例如,如果第一个微调器等于“Lbs”,第二个等于“Grams”,那么将调用一个函数 这是我的琴弦 <string-array name="weightFSpinner"> <item>Lbs</item> <item>Grams</item> <it
<string-array name="weightFSpinner">
<item>Lbs</item>
<item>Grams</item>
<item>Kilograms</item>
<item>Stone</item>
<item>Ounces</item>
</string-array>
<string-array name="weightSSpinner">
<item>Lbs</item>
<item>Grams</item>
<item>Kilograms</item>
<item>Stone</item>
<item>Ounces</item>
</string-array>
磅
克
公斤
石
盎司
磅
克
公斤
石
盎司
这是我体重页面上的代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weight_page);
// Code for first drop down list
final Spinner weightFSpinner = (Spinner) findViewById(R.id.weightFSpinner);
final ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(weightPage.this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.weightFSpinner));
myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
weightFSpinner.setAdapter(myAdapter);
// code for second drop down list
final Spinner weightSSpinner = (Spinner) findViewById(R.id.weightSSpinner);
final ArrayAdapter<String> myAdapter2 = new ArrayAdapter<String>(weightPage.this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.weightSSpinner));
myAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
weightSSpinner.setAdapter(myAdapter2);
Button convertBtn = (Button) findViewById(R.id.convertBtn);
convertBtn.setOnClickListener(new View.OnClickListener() {
//when the button is pressed this happens
@Override
public void onClick(View view) {
if(myAdapter.equals("Lbs") && myAdapter2.equals("Grams")){
poundsToGrams();
}
}
//converting pounds to grams
private void poundsToGrams() {
EditText convertTxt = (EditText) findViewById(R.id.convertTxt);
TextView resultTxt = (TextView) findViewById(R.id.resultTxt);
String firstWeight;
String secondWeight;
double pounds;
try {
pounds = parseDouble(convertTxt.getText().toString());
} catch
(NumberFormatException ex) {
convertTxt.setError("Must be int");
return;
}
double result = (pounds * 453.59237);
resultTxt.setText(result + " Grams");
}
// firstWeight = myAdapter.getItem(0);
//secondWeight = myAdapter2.getItem(1);
});
}
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u weight\u页面);
//第一个下拉列表的代码
最终微调器weightFSpinner=(微调器)findViewById(R.id.weightFSpinner);
final ArrayAdapter myAdapter=新的ArrayAdapter(weightPage.this,android.R.layout.simple_list_item_1,getResources().getStringArray(R.array.weightFSpinner));
myAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
设置适配器(myAdapter);
//第二个下拉列表的代码
最终微调器权重微调器=(微调器)findViewById(R.id.weightSSpinner);
final ArrayAdapter myAdapter2=新的ArrayAdapter(weightPage.this,android.R.layout.simple_list_item_1,getResources().getStringArray(R.array.weightspinner));
myAdapter2.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
权重Spinner.setAdapter(myAdapter2);
按钮convertBtn=(按钮)findViewById(R.id.convertBtn);
convertBtn.setOnClickListener(新视图.OnClickListener(){
//按下按钮时会发生这种情况
@凌驾
公共void onClick(视图){
如果(myAdapter.equals(“Lbs”)和&myAdapter2.equals(“克”)){
磅图();
}
}
//把磅换算成克
私人空位磅图(){
EditText convertTxt=(EditText)findViewById(R.id.convertTxt);
TextView resultText=(TextView)findViewById(R.id.resultText);
弦首重;
弦次权;
两磅;
试一试{
pounds=parseDouble(convertTxt.getText().toString());
}抓住
(NumberFormatException ex){
convertTxt.setError(“必须是int”);
回来
}
双重结果=(英镑*453.59237);
resultText.setText(结果+克);
}
//firstWeight=myAdapter.getItem(0);
//secondWeight=myAdapter2.getItem(1);
});
}
}
将.onItemSelectedListener侦听器添加到两个微调器,并在Nothingselected和onItemSelected上重写其函数
在为两个微调器选择的选项中,将位置处的值保存为两个微调器都可以访问的字符串。例如,将权重从weightspinner保存到字符串“myWeightS”,将权重从weightspinner保存到字符串“myWeightF”
然后在两个微调器的ONIMSELECTED函数中,检查字符串是否相等。如果是,则执行所需的函数
if(myWeightS.equals(myWeightF))
{
//execute desired function
}
您可以通过以下方式进行操作: 1:如果不同的微调器采用相同的信息,则可以在它们之间共享适配器。 单个OnItemSelectedListener将用于2个微调器。您可以在作为参数传递的AdapterView上调用getId(),以了解哪个微调器引发了事件
@Override public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
switch(parentView.getId()){
case R.id.weightFSpinner:
fValue= weightFSpinner.getSelectedItem().toString();
break;
case R.id.weightSSpinner:
sValue= weightSSpinner.getSelectedItem().toString();
break;
case ...
}
}
@已选择覆盖公共视图(AdapterView父视图、View selectedItemView、int位置、长id){
开关(parentView.getId()){
案例R.id.weightFSpinner:
fValue=weightFSpinner.getSelectedItem().toString();
打破
案例R.id.weightspinner:
sValue=weightspinner.getSelectedItem().toString();
打破
案例
}
}
2:将所选值存储在2个变量中。项目是从微调器中选择的
3:然后检查“单击侦听器”按钮中的变量值,将onItemSelectedListener添加到微调器中
weightFSpinner.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(
AdapterView<?> parent, View view, int position, long id) {
// here you can add the if clauses to check which spinner contains which value and call the method accordingly
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
weightFSpinner.setOnItemSelectedListener(
新建AdapterView.OnItemSelectedListener(){
公营部门选举(
AdapterView父级、视图、整型位置、长id){
//在这里,您可以添加if子句来检查哪个微调器包含哪个值,并相应地调用该方法
}
未选择公共无效(AdapterView父级){
}
});
您可以随时使用按钮调用函数,否则我建议您在两个微调器中添加一个侦听器,在用户选择其权重后,该函数将自动调用。我的回答如下:)第一部分帮助我解决了这个问题,非常感谢您的帮助time@barrelmp谢谢你的反馈。如果你能接受这个答案,那就太好了,谢谢