Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当两个微调器等于特定字符串时,如何允许调用函数?_Java_Android_Android Studio_Mobile - Fatal编程技术网

Java 当两个微调器等于特定字符串时,如何允许调用函数?

Java 当两个微调器等于特定字符串时,如何允许调用函数?,java,android,android-studio,mobile,Java,Android,Android Studio,Mobile,我制作了两个纺纱机,它们都由不同类型的重量组成。这些是“磅”“石”“克”“公斤”。我需要能够检查用户从这两个微调器中选择的选项,然后根据他们选择的调用函数。例如,如果第一个微调器等于“Lbs”,第二个等于“Grams”,那么将调用一个函数 这是我的琴弦 <string-array name="weightFSpinner"> <item>Lbs</item> <item>Grams</item> <it

我制作了两个纺纱机,它们都由不同类型的重量组成。这些是“磅”“石”“克”“公斤”。我需要能够检查用户从这两个微调器中选择的选项,然后根据他们选择的调用函数。例如,如果第一个微调器等于“Lbs”,第二个等于“Grams”,那么将调用一个函数

这是我的琴弦

  <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谢谢你的反馈。如果你能接受这个答案,那就太好了,谢谢