2011-02-15 96 views
0

我正在dooing this教程,並在一個點上,他採用了R.id.xxxx其中x是一個控件的名稱/ ID我正在使用,如果我理解正確的話。我似乎無法找到android.R.id.radio0?(等等)

現在我有兩個R的東西的「。」,一個是android.R,另一個是dk.ilizane.android.temperatur.R它根本不包含任何id,所以我有點想我會是使用android.R.id但我在找editText1,radio0,收音機1,它不包含任何的那些。

有沒有人好心地試圖解釋這樣對我?我想學習這個,所以我希望如果答案是不只是正確的代碼,但一個答案,我可以

我的代碼:

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

} 

回答

2

應該在dk.ilizane.android .temperatur.R.id.radio1。如果您查看main.xml文件中的教程,RadioButton的ID是radio0和radio1。您的項目自定義資源將被編譯到包中的名爲R的類中。在Eclipse中應該有一個包含java文件的gen src目錄。

+0

非常感謝 - 我寫了很多代碼,而不是複製和粘貼,所以我會對這個工作有更好的感覺。這讓更多的餘地錯誤:/現在我的問題的答案,但另一個錯誤是我..接壤的一些resources.ap_不存在:S – 2011-02-15 14:18:16

+0

嘗試做一個乾淨的重新構建。 – 2011-02-15 14:19:16

1

你有/res/layout/main.xml?您提到的R文件是以引用項目資源的方式生成的。檢查您是否具有本教程中定義的相同資源。然後R文件將在/gen目錄中爲dk.ilizane.android.temperatur.R

1

我這個問題之前,由於某種原因,我有一個import android.R;導致import android.R; & com.packagename.R之間的衝突。如果刪除import android.R;,不會有衝突&你的代碼進行編譯。

但是,如果你真的需要import android.R;那麼你必須指定你想要哪個R

例如,如果您想在您的項目中引用View,則必須參考此視圖的完整路徑,如com.packagename.R.id.viewName