2014-09-24 62 views
0

我是Android應用開發者的初學者。首先,我試着用下面的代碼開發一個小應用程序。沒有編譯時或運行時錯誤。但它沒有考慮到我的輸入,也沒有獲得輸出。數據沒有被填充在textview-Android中

package com.example.myfirstapp; 

import android.os.Bundle; 
//import android.view.View.OnClickListener; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.RadioButton; 
import android.widget.TextView; 
/*import android.widget.Toast; 
import android.app.Activity; 
import android.view.Menu;*/ 

public class MainActivity extends Activity implements OnClickListener{ 
    //private EditText text; 
    RadioButton mileButton,kmhButton ; 
    TextView textview1,textview2; 
    Button calcButton; 
    private View.OnClickListener droidTapListener; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     System.out.println("HIIIIIIIIII"); 

     setContentView(R.layout.activity_main); 
     //text = (EditText) findViewById(R.id.textView1); 
     } 



    @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); 
     //getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    public void calculate() { 

    mileButton = (RadioButton) findViewById(R.id.radio0); //radiobutton objects 
     kmhButton = (RadioButton) findViewById(R.id.radio1); 

     calcButton = (Button) findViewById(R.id.button1);  //button obj 
     calcButton.setOnClickListener(droidTapListener); //setting up click listeners. 

     TextView textview1 = (TextView) findViewById(R.id.textView1); 
     TextView textview2 = (TextView) findViewById(R.id.textView2); 
     /*if(text.getText().length()==0) 
      System.out.println("Empty Value");*/ 

     if(textview1.getText().length()==0) 
      System.out.println("Enter a valid input."); 

     /*Toast.makeText(this, "enter a valid number", Toast.LENGTH_LONG) 
     .show(); */ 

     double inputValue = Double.parseDouble(textview1.getText().toString()); 
     if (mileButton.isChecked()) { 
      //text.setText(String.valueOf(convertToMiles(inputValue))); 
      double res= convertToMiles(inputValue); 
      String finalresult = new Double(res).toString(); 
      textview2.setText(finalresult); 

      System.out.println("RESULT"+finalresult); 

      // uncheck "to miles" Button 
      mileButton.setChecked(false); 
      // check "to km/h" Button 
      kmhButton.setChecked(true); 
     } else { /* if kmhButton isChecked() */ 
      //text.setText(String.valueOf(convertToKmh(inputValue))); 
      double res= convertToKmh(inputValue); 
      String finalresult = new Double(res).toString(); 
      textview2.setText(finalresult); 

      System.out.println("RESULT"+finalresult); 

      // uncheck "to km/h" Button 
      kmhButton.setChecked(false); 
      // check "to miles" Button 
      mileButton.setChecked(true); 

     } 
    } 



private double convertToMiles(double inputValue) { 
    // convert km/h to miles 
    double res=inputValue * 1.609344; 
    return res; 

    //return (inputValue * 1.609344); 
} 

private double convertToKmh(double inputValue) { 
    // convert miles to km/h 
    return (inputValue * 0.621372); 
    } 

public void onClick(View v) { 
    calculate(); 
} 
} 
+1

你沒有在onCreate()中調用你的calculate()...並且還使用Toast而不是println ..並且使用按鈕來設置onClickListener..so在按鈕上單擊可以調用calculate方法並檢查文本ID填充或null :) – Ranjit 2014-09-24 11:44:47

+0

首先在'onCreate()'方法上調用'calculate()'並且改變這個'String finalresult = String.valueOf(res);' – Piyush 2014-09-24 11:47:47

+0

你似乎誤解了幾個核心概念Android編程。爲什麼不試圖通過閱讀一本書(Reto Meier的專業Android 4應用程序開發很好)或在線課程(如https://www.udacity.com/course/ud853)來學習基礎知識? – 2Dee 2014-09-24 11:51:03

回答

0

您已經在計算方法中設置了onclickListener。意味着除非你的計算方法不被調用,否則onClickListener將不會被調用,並且如果onClickListener不會被調用,計算()方法將不會被調用。

做這個

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    System.out.println("HIIIIIIIIII"); 

    setContentView(R.layout.activity_main); 
    //text = (EditText) findViewById(R.id.textView1); 

    calcButton = (Button) findViewById(R.id.button1);  
    calcButton.setOnClickListener(droidTapListener); 

    } 
0

首先,在所有你應該初始化在的onCreate()視圖組件,所以在移動這段代碼中創建你已經宣佈這個變量文本視圖之前刪除類型定義。

mileButton = (RadioButton) findViewById(R.id.radio0); //radiobutton objects 
    kmhButton = (RadioButton) findViewById(R.id.radio1); 

    calcButton = (Button) findViewById(R.id.button1);  //button obj 
    calcButton.setOnClickListener(this); //you droidTapListener isn't initialize and you implements clickListener so use this for listening this event. 
    textview1 = (TextView) findViewById(R.id.textView1); 
    textview2 = (TextView) findViewById(R.id.textView2); 

不要忘記添加@override您的onClick()函數,以便您的按鈕水龍頭將運行的onclick功能,所以計算功能。

+0

初始化onCreat()上的對象,是不是它們本身僅適用於該func?在calculate()中使用這些對象會給我錯誤:\ – 2014-09-24 12:13:20

+0

您已聲明您的活動變量 'RadioButton mileButton,kmhButton; TextView textview1,textview2; 按鈕calcButton;'所以你可以在你的活動中的任何地方使用它(onCreate(),calculate()等) 重點是關於你的calcButton的監聽器使用這個並覆蓋onClick方法 – 2014-09-24 12:15:42

+0

謝謝大家!有效 :) – 2014-09-30 06:07:37