我正在编写this教程,并且他一度使用R.id.xxxx,其中x是我正在使用的控件的名称/ id,如果我理解正确的话。
现在我有两个R的东西-.-'和一个是android.R而另一个是dk.ilizane.android.temperatur.R它根本不包含任何id所以我有点想我会是使用android.R.id,但我正在寻找editText1,radio0,radio1,它不包含任何这些。
有没有人可以尝试向我解释一下?我正在努力学习这一点,所以如果答案不仅仅是正确的代码而且我能够回答
,我将不胜感激。我的代码:
package dk.ilizane.android.temperatur;
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 Omregn extends Activity
{
private EditText text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (EditText) findViewById(android.R.id.editText1);
}
public void myClickHandler(View view) {
switch (view.getId())
{
case android.R.id.button1:
RadioButton celsiusButton = (RadioButton) findViewById(dk.ilizane.android.temperatur.R);
RadioButton fahrenheitButton = (RadioButton) findViewById(android.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)));
}else {
text.setText(String.valueOf(convertCelsiusToFahrenheit(inputValue)));
}
if(fahrenheitButton.isChecked()){
fahrenheitButton.setChecked(false);
celsiusButton.setChecked(true);
}
else
{
fahrenheitButton.setChecked(true);
celsiusButton.setChecked(false);
}
break;
}
}
private float convertFahrenheitToCelsius(float fahrenheit){
return ((fahrenheit - 32) * 5 / 9);
}
private float convertCelsiusToFahrenheit(float celsius){
return ((celsius *9) / 5) + 32;
}
}
答案 0 :(得分:2)
应该在dk.ilizane.android.temperatur.R.id.radio1中。如果你查看main.xml文件中的教程,RadioButtons的id是radio0和radio1。您的项目自定义资源将编译到包中名为R的类中。在Eclipse中应该有一个包含java文件的gen src目录。
答案 1 :(得分:1)
main.xml
下有/res/layout/
吗?生成的R
文件是作为引用项目资源的方式生成的。检查您是否具有与教程中定义的资源相同的资源。然后,R
文件将作为dk.ilizane.android.temperatur.R
目录中的/gen
存在。
答案 2 :(得分:1)
之前我遇到过这个问题,出于某种原因,我有一个import android.R;
导致import android.R;
& com.packagename.R
。如果您删除import android.R;
,则不会发生冲突&你的代码将编译。
但是,如果你真的需要import android.R;
,那么你必须指定你想要的R
。
例如,如果您想引用项目中的View
,则必须引用视图的完整路径com.packagename.R.id.viewName
。