2017-09-03 7 views
-2

私は自分の年齢が表示されているアンドロイドプログラムを開発しています。しかし、ボタンを押したときに表示される回答は表示されません。 あなたは私が間違っているところを提案してもらえますか?2017 - myAgeの違いを表示する方法を教えてください。アンドロイドのテキストビューで私のディスプレイを取得するには?

public class MainActivity extends AppCompatActivity { 

Button press; 
EditText editText; 
TextView enterText; 
int myAge; 
int yearOfBirth; 
int year = 2017; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    editText = (EditText)findViewById(R.id.editText) ; 
    enterText = (TextView)findViewById(R.id.entertext); 
    press = (Button)findViewById(R.id.press); 

     try 
     { 
      yearOfBirth = Integer.parseInt(editText.getText().toString()); 

      }catch(NumberFormatException e) 
      { 
       e.printStackTrace(); 
      } 



      press.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        myAge = yearOfBirth; 
        enterText.setText(String.valueOf(myAge)); 
       } 
      }); 
    } 
} 

スクリーンショット:

enter image description here

+2

クリックリスナー内から編集テキストの値を取得する必要があります。現在、アプリケーションの起動時に編集テキストの値を取得しています(onCreate)。ボタンを押したときに編集テキストの値を取得したい場合は、onClickListenerに入力する必要があります。 – swerly

+0

そして正しい出力に 'yearOfBirth'から' year'を減算します。 – Blasanka

答えて

1

tryブロックで

yearOfBirth = Integer.parseInt(editText.getText().toString()); 

を削除し、onClickのブロック内に追加します。年= 2017を入れ

、代わりに

myAge = yearOfBirth; 

の書き込み

int currYear = Calendar.getInstance().get(Calendar.YEAR); 
myAge = currYear - yearOfBirth; 

にのみ、私はあなたがあなたの正確な年を与えるCalendarクラスを使用することをお勧めする理由であることは今年のために動作します。

+0

ありがとうございます。アンドロイドに新しいです、これは私が新しいことを素早く学ぶのに役立ちます。 –

1

あなただけで年齢を計算するステップを逃しているようです。

あなたは正しくyearOfBirthを取得しているが、あなたはちょうどこのよう

myAge = year - yearOfBirth 

のようなものをやっていない、それにmyAgeを設定しています。

press.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        myAge = year - yearOfBirth; // Here. 
        enterText.setText(String.valueOf(myAge)); 
       } 
      }); 
0

年齢計算のロジックが間違っているようです。

myAge = year - yearOfBirth; //calculate age 

これは動作するはずです。

関連する問題