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.