[英]How to change text on the TextView widget by using a Spinner dropdown
我有一個實際的事情要做。 我必須使用 java 制作一個測量轉換器 android 應用程序。 它涉及使用微調器下拉菜單。 這個鏈接是我的實用講義的圖片。 如圖所示,如果用戶在微調器下拉菜單中選擇英里到公里,TextView 小部件將顯示英里和公里。 但是我無法讓它工作。 我現在將為您提供示例代碼。
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) {
}
}
我的應用程序因以下代碼而崩潰。 您能否找出問題所在,如果發現問題,您可以粘貼正確的代碼來修復它嗎? 謝謝。
OnItemSelected 你可以得到 position 並根據它執行一個方法。
@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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.