2014-09-24 61 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