4

我猜應該用Android-Manifest.xml文件或佈局文件夾中的某些東西來完成。我是Android新手,所以我不知道該寫些什麼。R.id無法解析

public class AndroidPong extends Activity implements OnClickListener { 
    static String tag; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super .onCreate(savedInstanceState); 

     tag = getResources().getString(R.string.app_name); 
     fullScreen(); 
     splashScreen(); 
    } 

    @Override 
    protected Dialog onCreateDialog(int id) { 
     // TODO Auto-generated method stub 
     return super .onCreateDialog(id); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // TODO Auto-generated method stub 
     return super .onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 
     return super .onOptionsItemSelected(item); 
    } 

    @Override 
    protected void onStop() { 
     // TODO Auto-generated method stub 
     super .onStop(); 
    } 

    @Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super .onDestroy(); 
    } 

    void startGame() { 
     setContentView(R.layout.game);// error 
     this .findViewById(R.id.Button01).setOnClickListener(this);//error 
     this .findViewById(R.id.Button02).setOnClickListener(this);//Error 
    } 

    void splashScreen() { 
     setContentView(R.layout.splash);// error 
     this .findViewById(R.id.pongtable).setOnClickListener(this);//error 
    } 

    void gameMenu() { 

    } 

    void fullScreen() { 
     this .requestWindowFeature(Window.FEATURE_NO_TITLE); 
     this .getWindow().setFlags(
       WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 

    public static void debug(String debug) { 
     Log.d(tag, debug); 
    } 


<?xml version="1.0" encoding="utf-8"?> 
<absoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

<Button android:id="@+id/Button01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

<Button android:id="+id/Button02" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
</absoluteLayout> 
+0

你能後的佈局XML文件? '/ res/layout'中的佈局XML是什麼?佈局XML文件是否叫做'game.xml'和'splash.xml'? – 2011-06-02 01:59:33

+1

game.xml <按鈕機器人:ID = 」@ + ID/Button01「 機器人:layout_width =」 WRAP_CONTENT 「 機器人:layout_height = 「WRAP_CONTENT」 \t \t /> <按鈕機器人:ID = 「+ ID/Button02」 機器人:layout_width = 「WRAP_CONTENT」 機器人:layout_height =」 WRAP_CONTENT」 /> GameBuilder 2011-06-02 02:40:25

+0

我給一個從那裏我複製此代碼 鏈接http://www.java2s.com/Open-Source/Android/Game/android-pong-kt/app.pong.htm 在這個沒有Android清單,飛濺,遊戲xml文件 – GameBuilder 2011-06-02 02:41:17

回答

3

如果您正在使用Eclipse,這個問題已經被問

R cannot be resolved - Android error

+1

Eclipse的問題在於它爲'android.R'添加了一個錯誤的導入。我沒有在OP的例子中看到這一點(儘管根據我的經驗,這是導致這個錯誤的唯一原因,所以我沒有-1)。 – 2011-06-02 03:01:11

0

一些技巧:

您能前使用R.id,再用乾淨的項目和建設它再次。我不建議自動構建。

在項目屬性中,您可以在/ src文件夾之前訂購/ gen文件夾。這將導致gen文件夾被首先編譯,因此R將首先生成並且您的更改可能會被反映。

確保您沒有任何其他類型的編譯錯誤。

3

看起來你有兩種不同類型的錯誤。我會先解決你在問題標題中提到的問題。這與資源ID有關。

R.id Cannot be resolved

該錯誤發生時,編譯器不能找到你所引用的一些資源(如字符串,佈局,菜單等)的資源。這通常是你可以嘗試的一些事情的結果。

首先,確保您使用正確的名稱來引用您的資源ID。例如,你有R.id.Button01。如果你用這個來引用一個按鈕的res ID,那麼確保你的XML按鈕有屬性android:id="@+id/Button01"

其次,確保你的XML佈局文件沒有錯誤。如果還有其他錯誤,比經常使用Eclipse(我假設您使用的是Eclipse)將無法識別該項目的資源ID是否已創建。

如果你看不到任何這樣的明顯錯誤,那麼嘗試清理你的構建。 >清潔...

其他錯誤與您OnClickListeners

this .findViewById(R.id.Button01).setOnClickListener(this);//error 
this .findViewById(R.id.Button02).setOnClickListener(this);//Error 

this .findViewById(R.id.pongtable).setOnClickListener(this);//error 

此錯誤是更簡單的事情 - 通過Project做到這一點。您正在設置您的點擊監聽器不正確。 setOnClickListener方法將OnClickListener作爲參數。如果你想建立一個新的,你需要傳入一個新建立的OnClickListener。你可以這樣做...

this.someButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // whatever the button will do    
     } 
    }); 
+0

void startGame(){ setContentView(R.layout.game); this .findViewById(R.id.Button01)。setOnClickListener(this); //錯誤:在該行多個標記 // \t - ID不能得到解決或無法在現場 // \t - Button01不能得到解決或者是 這.findViewById(R.id.Button02).setOnClickListener(這個 ); //錯誤 } i的佈局game.xml創建新的XML文件 – GameBuilder 2011-06-02 02:27:16

+0

<按鈕機器人:ID =」 @ + ID/Button01「 機器人:layout_width = 「WRAP_CONTENT」 機器人:layout_height = 「WRAP_CONTENT」 \t \t /> <按鈕機器人:ID = 「+ ID/Button02」 //錯誤RROR:錯誤:不允許使用字符串類型(在'id'處,值爲 '+ id/Button02')。 機器人:layout_width = 「WRAP_CONTENT」 機器人:layout_height = 「WRAP_CONTENT」 /> GameBuilder 2011-06-02 02:32:42

2

我今天也遇到了這個問題。我檢查了所有上述答案,但沒有任何工作。在我看來,R.java文件沒有被正確地重新生成(即使在項目/清理命令之後)。沒有爲我的項目創建「R.id」類。

我終於成功地通過在我的main.xml佈局文件中使用圖形佈局視圖(單擊編輯器窗口左下角的圖形佈局選項卡for main.xml)來解決問題。

我將一個虛擬字段拖入佈局(其中包含一個id)並將其保存。巴姆!現在Eclipse正在按預期生成R.id類。我從main.xml中刪除了虛擬字段,並且所有內容都應該如此。

1

我有兩個用大寫和小寫命名的圖像。它工作正常,我在項目中使用它們。我建了幾次,它從不關心。突然出於任何原因,它不再喜歡它們了。

這表明該控制檯:

res\drawable-hdpi\Image.png: Invalid file name: must contain only [a-z0-9_.]

剛取出大寫字符,它的固定。 我猜其他資源錯誤也會出現在控制檯中。

注意:您也將看到「問題」窗口這樣的錯誤:

Unparsed aapt error(s)! Check the console for output.