2014-11-29 3 views
0

Я пытаюсь создать приложение для преобразования температуры для Android. Я хочу использовать 2 прядильщика («От» и «Кому»). с 3 элементами, Цельсия, Кельвина и Фаренгейта. Я также добавил одно текстовое поле, в которое пользователь поместит номер. внизу внизу кнопка «Конвертировать» и одно текстовое изображение для результата. теперь мне нужно, чтобы при нажатии кнопки «Конвертировать» текстовое изображение заменяется на результат, но в зависимости от выбранных элементов в 2 спиннер. например, если выбранные товары от celsius до fahrenheit, он должен рассчитать результат следующим образом: 9/5 * (номер написан пользователем) +32 , так что мой вопрос: как это сделать, я думаю, что я должен использовать "if" но я не знаю, как, так как элементы не определены ничем:eclipse spinner item id

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="From"> 
     <item>Celsius</item> 
     <item>Kelvin</item> 
     <item>Fahrenheit</item> 
    </string-array> 
</resources> 

кстати это XML-файл в значениях, которые я сделал для блесны очевидно. и вот мой MainActivity:

package com.usc.uscconverter; 

import android.support.v7.app.ActionBarActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TextView; 


public class MainActivity extends ActionBarActivity { 
    Spinner sp, sp2; 
    TextView textFrom, textTo, textDegree, textResult; 
    EditText editText1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     sp=(Spinner) findViewById(R.id.spinner1); 
     ArrayAdapter<CharSequence> ar= ArrayAdapter.createFromResource(this, R.array.From, android.R.layout.simple_list_item_1); 
     ar.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
     sp.setAdapter(ar); 

     sp2=(Spinner) findViewById(R.id.spinner2); 
     ArrayAdapter<CharSequence> ar2= ArrayAdapter.createFromResource(this, R.array.To, android.R.layout.simple_list_item_1); 
     ar2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
     sp2.setAdapter(ar2); 

     Button buttonConvert = (Button) findViewById(R.id.buttonConvert); 
     buttonConvert.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v){ 

      } 
     }); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

EDIT я редактировал свой основной вид деятельности и прибавил:

Button buttonConvert = (Button) findViewById(R.id.buttonConvert); 
     buttonConvert.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v){ 
       if (sp.getSelectedItem().toString().equals("Celsius") && sp2.getSelectedItem().toString().equals("Fahrenheit")){ 
        editText1 = (EditText)findViewById(R.id.editText1); 
        num = editText1.getText().toString(); 
        int d = 9/5; 
        int n = Integer.parseInt(num); 
        int r = d * n + 32; 
        textResult.setText(String.valueOf(r)); 
       } 

      } 


     }); 

без ошибок, хотя, но когда я запустить приложение он выходит из строя, и в LogCat он говорит так:

11-29 18:42:24.890: D/dalvikvm(846): Not late-enabling CheckJNI (already on) 
11-29 18:42:36.830: I/Choreographer(846): Skipped 165 frames! The application may be doing too much work on its main thread. 
11-29 18:42:37.840: D/gralloc_goldfish(846): Emulator without GPU emulation detected. 
11-29 18:42:41.740: D/dalvikvm(846): GC_FOR_ALLOC freed 113K, 6% free 2971K/3156K, paused 39ms, total 46ms 
11-29 18:42:41.980: I/Choreographer(846): Skipped 75 frames! The application may be doing too much work on its main thread. 
11-29 18:42:43.240: I/Choreographer(846): Skipped 118 frames! The application may be doing too much work on its main thread. 
11-29 18:42:44.190: I/Choreographer(846): Skipped 102 frames! The application may be doing too much work on its main thread. 
11-29 18:42:45.330: I/Choreographer(846): Skipped 79 frames! The application may be doing too much work on its main thread. 
11-29 18:42:45.630: I/Choreographer(846): Skipped 57 frames! The application may be doing too much work on its main thread. 
11-29 18:42:50.050: D/AndroidRuntime(846): Shutting down VM 
11-29 18:42:50.050: W/dalvikvm(846): threadid=1: thread exiting with uncaught exception (group=0xb2a42ba8) 
11-29 18:42:50.060: E/AndroidRuntime(846): FATAL EXCEPTION: main 
11-29 18:42:50.060: E/AndroidRuntime(846): Process: com.usc.uscconverter, PID: 846 
11-29 18:42:50.060: E/AndroidRuntime(846): java.lang.NullPointerException 
11-29 18:42:50.060: E/AndroidRuntime(846): at com.usc.uscconverter.MainActivity$1.onClick(MainActivity.java:49) 
11-29 18:42:50.060: E/AndroidRuntime(846): at android.view.View.performClick(View.java:4438) 
11-29 18:42:50.060: E/AndroidRuntime(846): at android.view.View$PerformClick.run(View.java:18422) 
11-29 18:42:50.060: E/AndroidRuntime(846): at android.os.Handler.handleCallback(Handler.java:733) 
11-29 18:42:50.060: E/AndroidRuntime(846): at android.os.Handler.dispatchMessage(Handler.java:95) 
11-29 18:42:50.060: E/AndroidRuntime(846): at android.os.Looper.loop(Looper.java:136) 
11-29 18:42:50.060: E/AndroidRuntime(846): at android.app.ActivityThread.main(ActivityThread.java:5017) 
11-29 18:42:50.060: E/AndroidRuntime(846): at java.lang.reflect.Method.invokeNative(Native Method) 
11-29 18:42:50.060: E/AndroidRuntime(846): at java.lang.reflect.Method.invoke(Method.java:515) 
11-29 18:42:50.060: E/AndroidRuntime(846): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
11-29 18:42:50.060: E/AndroidRuntime(846): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
11-29 18:42:50.060: E/AndroidRuntime(846): at dalvik.system.NativeStart.main(Native Method) 
11-29 18:42:54.150: I/Process(846): Sending signal. PID: 846 SIG: 9 
+0

Вы пробовали это: http://stackoverflow.com/questions/15545741/android-how-to-get-the-selected-item-value-from-a-spinner-and-put-it- in-a-st –

+0

все еще не работает, я не очень опытен, хотя, я сделал несколько приложений, но я никогда не работал с прядильщиками –

+0

И где ссылка на TextView textResult? –

ответ

0

добавить это в ваш код:

textResult = (TextView)findViewById(R.id.textResult); 
+0

теперь он работает, но результат неправильный, я вводил 20 celsius например, и он должен быть 68 fahrenheit, но он показывает 52 вместо , Я бы сказал, что он не рассчитать 9/5, всего 20 + 32 –

+0

int d = 9/5; <- это неправильно 9/5 1,8, и это не целое число, попробуйте double :) –

+0

спасибо, человек, спасибо большое, вы мужчина –