2013-05-16 65 views
0

我正在使用vogella教程,我幾乎完全按照說明進行操作,但它給我一個文本和單選按鈕錯誤,說它無法解析,或者它不在域中。我對Android非常陌生。你能幫我解開代碼嗎?Android溫度Vogella教程錯誤

package convert.activity; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.RadioButton; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
private EditText text; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

text = (EditText) findViewById(R.id.editText1); 

} 

// This method is called at button click because we assigned the name to the 
// "On Click property" of the button 
public void myClickHandler(View view) { 
switch (view.getId()) { 
case R.id.button1: 
    RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0); 
    RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1); 
    if (text.getText().length() == 0) { 
     Toast.makeText(this, "Please enter a valid number", 
       Toast.LENGTH_LONG).show(); 
     return; 
    } 

    float inputValue = Float.parseFloat(text.getText().toString()); 
    if (celsiusButton.isChecked()) { 
     text.setText(String 
       .valueOf(convertFahrenheitToCelsius(inputValue))); 
     celsiusButton.setChecked(false); 
     fahrenheitButton.setChecked(true); 
    } else { 
     text.setText(String 
       .valueOf(convertCelsiusToFahrenheit(inputValue))); 
     fahrenheitButton.setChecked(false); 
     celsiusButton.setChecked(true); 
    } 
    break; 
} 
} 

// Converts to celsius 
private float convertFahrenheitToCelsius(float fahrenheit) { 
return ((fahrenheit - 32) * 5/9); 
} 

// Converts to fahrenheit 
private float convertCelsiusToFahrenheit(float celsius) { 
return ((celsius * 9)/5) + 32; 
} 
} 

這裏是我的代碼activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/myColor" > 

    <EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:ems="10" 
    android:inputType="numberSigned|numberDecimal" 
    > 

    <requestFocus /> 
</EditText> 

<RadioGroup 
    android:id="@+id/radioGroup1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/editText1" > 

    <RadioButton 
     android:id="@+id/radio0" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:checked="true" 
     android:text="@string/celsius" /> 

    <RadioButton 
     android:id="@+id/radio1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/fahrenheit" /> 
</RadioGroup> 


<Button 
android:id="@+id/button1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/calc" 
android:onClick="myClickHandler"> 
</Button> 

</RelativeLayout> 

錯誤是editText1,radio0,收音機1和按鈕1 ...對於所有這些錯誤是一樣的,即它不能得到解決或者不在現場。

+0

發佈您的activity_main xml – vinoth

+0

嘗試將您的findviewbyId所有在onCreate並使其變量公開 –

+0

你在哪裏初始化你的button1,editText1,radio0,radio1? – Opiatefuchs

回答

0

這... 我用你的XML文件,並將其完美地解決

EditText text; 
RadioButton r1,r2; 
    Button b1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    text = (EditText)findViewById(R.id.editText1); 
    r1 =(RadioButton)findViewById(R.id.radio0); 
    r1 =(RadioButton)findViewById(R.id.radio1); 
} 

,做這樣的

b1 = (Button)findViewById(R.id.button1); 
    b1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // your Switch code here 

     } 
    }); 
} 
+0

感謝您在代碼上的時間,但即使在使用您的代碼後,我仍然收到相同的錯誤。它仍然在說它無法解決或不在現場。 –

+0

你是否已經從tutorial.do中正確地複製了string.xml?你在 – vinoth

+0

上發生的任何錯誤都會做一件事,從xml文件中移除你的android:onClick =「myClickHandler」,並像這樣創建你的setonclicklister b1.setOnClickListener(new OnClickListener() { \t \t \t \t \t \t @Override \t \t \t公共無效的onClick(視圖v){ \t \t \t \t // TODO自動生成方法存根 \t \t \t \t \t \t \t} \t \t}); 並把開關代碼放在裏面,我希望能工作 –

0

我檢查你的代碼,它是完美的工作改變像activity_main此

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
> 

    <EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:ems="10" 
    android:inputType="numberSigned|numberDecimal" 
    > 

    <requestFocus /> 
</EditText> 

<RadioGroup 
    android:id="@+id/radioGroup1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/editText1" > 

    <RadioButton 
     android:id="@+id/radio0" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:checked="true" 
     android:text="celsius" /> 

    <RadioButton 
     android:id="@+id/radio1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="fahrenheit" /> 
</RadioGroup> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@+id/editText1" 
    android:onClick="myClickHandler" 
    android:text="calc" /> 

</RelativeLayout> 
+0

它顯示相同的錯誤... :( –

+0

嘗試清理項目項目 - >清潔在eclipse – vinoth

+0

這是說R不能解析爲一個變量,現在。 –