2013-06-20 3 views
0

Я совершенно новичок в создании приложений, и я хочу сделать что-то, в котором есть два EditTexts (только число), которые затем делятся и превращаются в проценты и отображаются в TextView. К сожалению, я не знаю, правильно ли я делаю. Вот мой кодКак изменить TextView со значениями в EditText

import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.Menu; 
    import android.widget.EditText; 
    import android.widget.TextView; 
    public class FirstInformation extends Activity { 

EditText eT4 = (EditText)findViewById(R.id.editText4); 
EditText eT5 = (EditText)findViewById(R.id.editText5); 
TextView tV6 = (TextView)findViewById(R.id.textView6); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_first_information); 
    if (eT4 != null && eT5 != null){ 
     double numerator = (double) Integer.parseInt(eT4.getText().toString()); 
     double denominator = (double) Integer.parseInt(eT5.getText().toString()); 
     double textView = Math.round(numerator/denominator)*100; 
     tV6.setText(textView+""); 
    } 
} 

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


public void updateTextView() { 
    if (eT4 != null && eT5 != null){ 
     double numerator = (double) Integer.parseInt(eT4.getText().toString()); 
     double denominator = (double) Integer.parseInt(eT5.getText().toString()); 
     double textView = Math.round(numerator/denominator)*100; 
     tV6.setText(textView+""); 
    } 
    return; 
} 

}

Любая обратная связь вообще было бы здорово. Спасибо огромное!

+0

Почему бы вам не использовать непосредственно Double.parseDouble (String) вместо этого кастинга? – Rob013

+0

«Я не знаю, правильно ли я делаю». Лучший способ узнать это - запустить его и посмотреть, получите ли вы ожидаемые результаты. Если нет, то это более полезно для нас и вас, если вы описываете ожидаемые результаты, фактические результаты и любые сообщения об ошибках/logcat – codeMagic

ответ

0

Ваш вопрос здесь со следующим кодом:

EditText eT4 = (EditText)findViewById(R.id.editText4); 
EditText eT5 = (EditText)findViewById(R.id.editText5); 
TextView tV6 = (TextView)findViewById(R.id.textView6); 

findViewById метод возвращает null для всех этих звонков, потому что вы делаете задачи, связанные с UI перед тем, setContentView способ закончен. Таким образом, вы можете объявить переменные там, а затем инициализировать их после метода setContentView.

0

Как и другие ребята, звонки findViewById() переходят в метод onCreate(), иначе они должны вернуть значение null.

Еще одна вещь: updateTextView() никогда не называется. Вы можете использовать TextWatcher или просто onClickListener:

tv6.setOnClickListener(new onClickListener() { 
    @Override 
    public void onClick(View v) { 
     updateTextView(); 
    } 
}); 

И результат будет обновляться каждый раз при нажатии на результат TextView. Кстати, использование TextWatcher (с помощью метода afterTextChanged()) является лучшей практикой. Я предлагаю вам взять руководство/учебник и попробовать это;)

Смежные вопросы