[英]Change image with spinner and calculate mathematical problems
我尝试的是在活动中使用微调器,具体取决于微调器列表中的选择选项,更改活动的图像,并在不同情况下使用开关执行彼此不同的操作
package com.example.liantonypozo.calculosmatematicos3;
import android.content.Intent;
import android.content.res.TypedArray;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
public class AnguloReferencia extends AppCompatActivity {
EditText ar1;
TextView tex1 , tex2,tex3;
private String[] listOfObjects;
private TypedArray images;
private ImageView itemImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_angulo_referencia);
ar1 = (EditText)findViewById(R.id.anguloReferenciaEditText);
tex1 = (TextView) findViewById(R.id.anguloReferenciatext1);
tex2 = (TextView) findViewById(R.id.anguloReferenciatext2);
tex3 = (TextView) findViewById(R.id.anguloReferenciatext3);
listOfObjects = getResources().getStringArray(R.array.object_array);
images = getResources().obtainTypedArray(R.array.object_image);
itemImage = (ImageView)findViewById(R.id.imageviewar);
final Spinner spinner = (Spinner)findViewById(R.id.spinnerar);
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item, listOfObjects);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
itemImage.setImageResource(images.getResourceId(spinner.getSelectedItemPosition(), -1));
double ar_1 = Double.parseDouble(ar1.getText().toString());
switch (position) {
case 0 :
tex1.setText("AR=180˚- AC");
tex2.setText("AR=180˚-" + ar_1 + "˚");
//double resu = 180 - ar1;
//double ar = Double.valueOf(resu);
//tex3.setText("AR=" + ar + "˚");
break;
default:
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
/* Button button = (Button)findViewById(R.id.pasosAnguloReferencia);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext() , HipotenusaEjemplo.class);
startActivityForResult(intent ,0);
}
});*/
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/* public void calcular4 (View v){
double ar_1 = Double.parseDouble(ar1.getText().toString());
tex1.setText("AR=180˚- AC");
tex2.setText("AR=180˚-"+ar_1+"˚");
double resu = (180 - ar_1) ;
double ar= Double.valueOf(resu);
tex3.setText("AR="+ ar +"˚");
}*/
}
但是,当我运行该应用程序时,出现以下错误...
--------- beginning of crash
04-06 21:35:58.564 3128-3128/com.example.liantonypozo.calculosmatematicos3 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.liantonypozo.calculosmatematicos3, PID: 3128
java.lang.NumberFormatException: empty String
at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1071)
at java.lang.Double.parseDouble(Double.java:547)
at com.example.liantonypozo.calculosmatematicos3.AnguloReferencia$1.onItemSelected(AnguloReferencia.java:69)
at android.widget.AdapterView.fireOnSelected(AdapterView.java:931)
at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:920)
at android.widget.AdapterView.-wrap1(AdapterView.java)
at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:890)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
现在可以了
switch (position) {
case 0 :
break;
case 1 :
if (!(ar1.getText().toString()).isEmpty()){
double ar_1 = Double.parseDouble(ar1.getText().toString ());
tex1.setText("AR=180˚- AC");
tex2.setText("AR=180˚-" + ar_1 + "˚");
double resu = 180 - ar_1;
double ar = Double.valueOf(resu);
tex3.setText("AR=" + ar + "˚");
}
if(!(ar1.getText().toString()).isEmpty())){
double ar_1 = Double.parseDouble(ar1.getText().toString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.