Android温度-Vogella教程错误

Android温度-Vogella教程错误,android,Android,我正在使用vogella教程,我几乎完全按照说明进行操作,但它在文本和单选按钮上给了我一个错误,说它无法解决或不在字段中。我对Android真的是个新手。你能帮我查一下密码吗 package convert.activity; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.

我正在使用vogella教程,我几乎完全按照说明进行操作,但它在文本和单选按钮上给了我一个错误,说它无法解决或不在字段中。我对Android真的是个新手。你能帮我查一下密码吗

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、radio1和button1上。。。所有这些错误都是相同的,即无法解决或不在字段中。

这里是。。。 我使用了您的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

        }
    });
}
<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>

我检查了你的代码,它工作得很好。像这样改变活动

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

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

        }
    });
}
<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>


post your activity\u main xml尝试将您的findviewbyId for all放入onCreate并公开其变量。您在哪里初始化了按钮1、editText1、radio0、radio1?感谢您花时间编写代码,但即使使用了您的代码,我仍然会收到相同的错误。它仍然在说它无法解析或不在字段中。您是否正确地从教程中复制了string.xml。您在这方面是否有任何错误?请执行一件事,从xml文件中删除您的android:onClick=“myClickHandler”,并像下面这样创建setonclicklister b1.setOnClickListener(new OnClickListener()){@Override public void onClick(视图v){//TODO自动生成的方法存根}});并将开关代码放入其中,我希望会work@Jeet我尝试过这样做,但仍然显示相同的错误。错误更像是类型视图中的方法setOnClickListener(View.OnClickListener)不适用于参数(新的OnClickListener(){})加上相同的id无法解析try clean your project project->clean in eclipseh你的R.java文件会消失我不知道如何更好地恢复它作为一个新的android项目来做应该可以工作实际上其中一个修复是导入android.R,当我导入时,返回相同的错误,即id无法解析或不是一个域d、 这就是为什么我建议你创建一个新的android项目,再次重复所有事情