首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用微调器下拉菜单更改TextView小部件上的文本

如何使用微调器下拉菜单更改TextView小部件上的文本
EN

Stack Overflow用户
提问于 2019-10-18 18:32:28
回答 1查看 81关注 0票数 0

我有个实际的事情要做。我必须做一个测量转换器安卓应用程序使用java。它涉及到使用微调器下拉菜单。如图所示,如果用户在微调器下拉菜单中选择英里到公里,TextView小部件将显示英里和公里。然而,我不能让它工作。现在,我将为您提供示例代码。

代码语言:javascript
运行
复制
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity implements 
TextView.OnEditorActionListener, AdapterView.OnItemSelectedListener {
private Spinner conversions;
private String list [];
private TextView u1;
private TextView u2;
private EditText input;
private TextView convertedUnit;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    conversions = findViewById(R.id.converterSelector);
    u1 = findViewById(R.id.unit1Lbl);
    u2 = findViewById(R.id.unit2Lbl);
    input = findViewById(R.id.enterNum);
    convertedUnit = findViewById(R.id.convertedNumLbl);
    list = getResources().getStringArray(R.array.conversion_types);



   // Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.conversion_types, android.R.layout.simple_spinner_item);
  // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
    conversions.setAdapter(adapter);

    conversions.setOnItemSelectedListener(this);
    u1.setOnEditorActionListener(this);
}


public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    // An item was selected. You can retrieve the selected item using
    // parent.getItemAtPosition(pos)
    String menuComponent = parent.getItemAtPosition(pos).toString();

    if(menuComponent.equals(pos)){
        if(pos == 0) {
            u1.setText(getString(R.string.milesLbl));
            u2.setText(getString(R.string.km));


            double mile = (double) 
            Double.parseDouble(String.valueOf(input.getText()));
            double kiloMeter = mile * 1.6093;
            convertedUnit.setText("" + kiloMeter);
        }


    }
}

public void onNothingSelected(AdapterView<?> parent) {
    // Another interface callback
}

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    return false;
}

@Override
public void onPointerCaptureChanged(boolean hasCapture) {

}
}

我的应用程序崩溃,代码如下。你能找出问题是什么吗?如果你发现了问题,你能粘贴正确的代码来修复它吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-10-18 19:05:24

OnItemSelected你可以得到这个位置并根据它执行一个方法。

代码语言:javascript
运行
复制
 @Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
    switch (i){
        case 0: milesToKilo();
        break;
        case 1: kiloTomiles();
        break;
        case 2: inchesToCenti();
        break;
        case 3: centiToInches();
        break;
        default:
    }

}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {

}

public void milesToKilo(){
    u1.setText("Miles");
    u2.setText("Kilos");

    // rest of calculations

}
public void kiloTomiles(){

    u1.setText("Miles");
    u2.setText("Kilos");
    // rest of calculations

}

public void inchesToCenti(){
    u1.setText("inches");
    u2.setText("Centi");
    // rest of calculations

}
public void centiToInches(){
    u1.setText("Centi");
    u2.setText("Inches");
    // rest of calculations

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58449053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档